| 분류 | 자료형 | byte | 설명 |
|---|---|---|---|
| 논리형 | boolean | 1 | true, false중 하나. 조건식과 논리계산 이용한다. |
| 문자형 | char | 2 | 변수에 하나의 문자만 저장할 수 있다. |
| 정수형 | byte | 1 | 정수를 저장하는데 사용되며 주로 int가 사용된다. |
| short | 2 | ||
| int | 4 | ||
| long | 8 | ||
| 실수형 | float | 4 | 실수를 저장하는데 사용되며 주로 double이 사용된다. |
| doule | 8 |
변수와 상수, 리터럴의 예)
int num1 = 3; // num1은 변수, 3은 리터럴
final int num2 = 2; // num2는 상수, 2는 리터럴
정수형과 실수형에는 여러 타입이 존재하므로, 리터럴에 접미사를 붙여서 타입을 구분한다. 그리고 10진수 외에도 여러 진수로 표현된 리터럴이라는 것을 표현하기 위해 접두사를 붙여서 구별한다.
// 접미사
long num1 = 100000000000L; // 접미사 L을 붙여 long타입의 리터럴
long num1 = 100_000_000_000L; // jdk1.7부터는 구분자를 넣어 큰 수를 편하게 읽을 수 있다.
double num2 = 1.234d; // 접미사 d를 붙여 double 타입의 리터럴
// 실수형의 기본값이 double이므로 d는 생략 가능하다.
float num3 = 2.345f; // 접미사 f를 붙여 float 타입의 리터럴
// f를 생략하면 double타입으로 인식하기 때문에 생략 불가능하다.
// 접두사
int binNum = 0b10; // 2진수 10이다. 10진수로 나타내면 2
int hexNum = 0x10; // 16진수 10이다. 10진수로 나타내면 16
int octNum = 010; // 8진수 10이다. 10진수로 나타내면 8
리터럴의 타입이 달라도 저장 범위가 넓은 타입에 좁은 타입의 값을 저장하는 것은 허용된다.
단 int a = 'A' 처럼 int 타입에 문자를 저장하는 경우에는 아스키코드값이 저장된다.
long l = 55; // long이 int보다 더 범위가 넓은 타입이므로 가능.
double d = 1.23f; // double이 float보다 더 범위가 넓은 타입이므로 가능.
int a = 'A'; // 문자 'A'의 아스키코드 65가 저장된다.
문자
char 타입의 문자는 '' 로 감싸며 반드시 하나 이상의 문자가 필요하다.
문자열
String 타입의 문자열은 "" 로 감싸며 아무 문자도 넣지 않은 빈 문자열을 허용한다.
문자열을 덧셈 연산자를 이용하여 결합할 수 있다. 숫자를 문자열 처럼 이어붙이는 형식으로 연산하고 싶을땐 숫자에 ""을 더해 문자열로 만들면 된다.
String name = "Min" + "Sung"; // name에 "MinSung" 저장됨
int num = 1017;
String numToString = num + ""; // numToString에 "1017" 저장됨
String result = name + num2; // result에 "MinSung1017" 저장됨
특수문자를 변수에 저장하기 위해선 특정 문자 리터럴을 char 타입의 변수에 저장한다.
char tab = '\t'; // 탭
char backspace = '\b'; // 백스페이스
char formFeed = '\f'; // formFeed
char newLine = '\n'; // 엔터
char carriageReturn = '\r'; // 엔터
char backSlash = '\\'; // 역슬래쉬
char qm = '\''; // 작은따옴표
char dqm = '\"'; // 큰따옴표
char unicode = '\u유니코드'; // 유니코드