/*
* 소스 파일 : Hello.java
*/
public class Hello {
public static int sum(int n, int m) {
return n + m;
}
// main() 메소드에서 실행 시작
public static void main(String[] args) {
int i = 20;
int s;
char a;
s = sum(i, 10); // sum() 메소드 호출
a = '?';
System.out.println(a); // 문자 '?' 화면 출력
System.out.println("Hello"); // "Hello" 문자열 화면 출력
System.out.println(s); // 정수 s 값 화면 출력
}
}
/*
* 출력 결과
* ?
* Hello
* 30
*/
코드 설명
클래스 만들기
- Hello 이름의 클래스 선언
public class Hello {
}
- class 키워드로 클래스 선언
- public 선언하면 다른 클래스에서 접근 가능
- 클래스 코드는 { } 안에 모두 작성
주석문
- // 한 라인 주석
- /* 여러 행 주석 */
main() 메소드
- 자바 프로그램은 main()에서 실행 시작
public static void main(String [] args) {
}
- public static viod으로 선언
- String[] args로 실행 인자를 전달받음
메소드
- C/C++에서의 함수를 메소드로 지칭
public static int sum(int n, int m) {
...
}
- 클래스 바깥에 작성 가능
메소드 호출
- sum() 메소드 호출
int i = 20;
s =sum(i, 10);
- sum() 호출 시 변수 i의 값과 정수 10을 전달
- sum()의 n, m에 각각 20, 10 값 전달
- sum()은 n + m 값인 30 리턴
- 변수 s는 정수 30 전달받음
변수 선언
- 변수 타입과 변수 이름 선언
int i = 20;
char a;
- 메소드 내에서 선언된 변수는 지역변수(메소드 실행이 끝나면 자동 소멸)
문장
- ;로 한 문장의 끝을 인식
int i = 20;
s = sum(i, 20);
화면 출력
- 표준 출력 스트림에 메세지 출력
System.out.println("Hello"); // Hello 화면 출력
- 표준 출력 스트림 System.out의 println() 메소드 호출
- println()은 여러 타입의 데이터 출력 가능
- println()은 출력 후 다음 행으로 커서 이동
식별자
클래스, 변수, 상수, 메소드 등에 붙이는 이름
- @, #, ! 등 특수 문자, 공백, 탭 사용 불가
- _, $는 사용 가능 but 잘 사용하지 않음
- 유니코드 문자, 한글 사용 가능
- 자바 언어의 키워드 사용 불가
- 첫 번째 문자로 숫자 사용 불가
- true, false, null 사용 불가
- 길이 제한 없음
- 영문 대소문자 구분
언어 관습
가독성 높은 이름
- 목적을 나타내는 이름 붙이기: s 보다 sum
- 충분히 긴 이름 사용: AVM 보다 AutoVendingMachine
헝가리언 이름 붙이기
- 클래스 이름 -> 첫 번째 문자는 대문자, 각 단어의 첫 번째 문자만 대문자
- 변수, 메소드 -> 첫 단어 이후 각 단어의 첫 번째 문자만 대문자
- 상수 -> 모든 문자 대문자
데이터 타입
기본 타입
타입 | 이름 | 크기(바이트) | 범위 |
논리 타입 | boolean | 1 (비트) | true, false |
문자 타입 | char | 2 | Unicode |
정수 타입 | byte | 1 | -128 ~ 127 |
short | 2 | -32768 ~ 32767 | |
int | 4 | -2^31 ~ 2^31-1 | |
long | 8 | -2^63 ~ 2^63-1 | |
실수 타입 | float | 4 | -3.4E38 ~ 3.4E38 |
double | 8 | -1.7E308 ~ 1.7E308 |
레퍼런스 타입(종류 1개, 용도 3가지)
- 배열에 대한 레퍼런스
- 클래스에 대한 레퍼런스
- 인터페이스에 대한 레퍼런스
문자열
- 문자열은 기본 타입이 아님
- 문자열이 섞인 + 연산 -> 문자열 연결
변수와 선언
변수
- 프로그램 실행 중 값을 임시 저장하기 위한 공간
- 데이터 타입에서 정한 크기의 메모리 할당
변수 선언
- 변수의 타입 다음에 변수 이름을 적어 변수를 선언
- , 를 사용하여 여러 개 동시 선언 가능
- 선언과 동시에 초기화 가능
- (변수) = (식)으로 값 저장
리터럴과 정수 리터럴
프로그램에서 직접 표현한 값
정수, 실수, 문자, 논리, 문자열 리터럴 존재
정수 리터럴
15 | 10진수 리터럴 15 |
015 | 0으로 시작하면 8진수, 십진수로 13 |
0x15 | 0x로 시작하면 16진수, 십진수로21 |
0b0101 | 0b로 시작하면 2진수, 십진수로 5 |
- int형으로 컴파일
- long 타입 리터럴은 숫자 뒤에 L 또는 l을 붙여 표시
실수 리터럴
소수점 형태나 지수 형태로 표현된 실수
- 실수 타입 리터럴은 double 타입으로 컴파일
- 숫자 뒤에 f(float)나 d(double)를 명시적으로 붙이기도 함
문자 리터럴
- 단일 인용부호 ' '로 문자 표현
- \u 다음에 4자리 16진수(2바이트의 유니코드)
- 특수문자 리터럴은 \로 시작
논리 리터럴
true, false
- boolean 타입 변수에 치환하거나 조건문에 이용
- C/C++와 달리 1, 0 사용 불가
null 리터럴
- 레퍼런스에 대입해서 사용
문자열 리터럴
- " "로 묶어 표현
- 문자열 리터럴은 String 객체로 자동 처리
상수
상수 선언
- final 키워드 사용
- 선언 시 초기값 지정
- 실행 중 값 변경 불가
final double PI = 3.14
자동 타입 변환
- 작은 타입은 큰 타입으로 자동 변환
- 치환문이나 수식 내에서 타입이 일치하지 않을 때
강제 타입 변환
- 자동 타입 변환이 안 되는 경우: 큰 타입이 작은 타입으로 변환할 때
- () 안에 변환할 타입 지정
- 강제 변환은 값 손실 우려
byte b = (byte) n;
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 자바 기본 문법 4 (0) | 2023.04.17 |
---|---|
[Java] 자바 기본 문법 3 (0) | 2023.04.17 |
[Java] 자바 기본 문법 2 (0) | 2023.04.17 |
[Java] 자바 이론 (0) | 2023.04.17 |