단 하나의 값을 저장할 수 있는 메모리 공간
대소문자가 구별되며 길이에 제약이 없다.
True와 true는 서로 다른 것으로 간주된다.
예약어를 사용하면 안 된다.
true는 예약어라서 사용할 수 없지만, True는 가능하다.
숫자로 시작해서는 안 된다.
top10은 허용되지만, 7up은 허용되지 않는다.
특수문자는 '_'와 '$'만 허용한다.
$harp은 허용되지만, S#arp은 허용되지 않는다.
클래스 이름의 첫 글자는 항상 대문자로 한다.
변수와 메서드의 이름의 첫 글자는 항상 소문자로 한다.
여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
ex) lastIndexOf, StringBuffer
상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다.
ex) PI, MAX_NUMBER
기본형(primitive type)
- 논리형(boolean), 문자형(cahr), 정수형(byte, short, int, long), 실수형(float, double) 계산을 위해 실제 값을 저장한다. 모두 8개
참조형(reference type)
- 객체의 주소를 저장한다. 8개의 기본형을 제외한 나머지 타입
참조형 변수를 선언할 때 변수의 타입으로 클래스의 이름을 사용하므로 클래스의 이름이 참조변수의 타입이 된다.
ex) Date클래스
Date today = new Date();
1byte | 2byte | 4byte | 8byte | |
---|---|---|---|---|
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
*boolean을 제외한 나머지 7개의 기본형은 서로 연산과 변환이 가능하다.
자료형 | 저장 가능한 값의 범위 | 크기(byte) |
---|---|---|
boolean | false, true | 1 |
char | '\u0000'~'\uffff' (0~216-1, 0~65535) | 2 |
byte | -128~127 (-27~27-1) | 1 |
short | -32,768~32,767 (-215~215-1) | 2 |
int | -2,147,483,648~2,147,483,647 (-231~231-1) | 4 |
long | -9,223,372,036,854,775,808~9,223,372,036,854,775,807 (-263~263-1) | 8 |
float | 1.4E-45~3.4E38 (1.4x10-45~3.4x1038) | 4 |
double | 4.9E-324~1.8E308 (4.9x10-324~1.8x10308) | 8 |
실수형은 정수형과 저장형식이 달라서 같은 크기라도 훨씬 큰갑을 표현할 수 있으나 오차가 발생할 수 있다. 따라서 실수형에서는 범위 뿐만 아니라 정밀도도 타입 선택의 중요한 기준이 된다.
정밀도
상수
final int MAX_SPEED = 10;
리터럴
int year = 2022;
final int MAX_SPEED = 10;
프로그래밍에서는 상수를 '값을 한 번 저장하면 변경할 수 없는 저장공간'으로 정의했기 때문에 이와 구분하기 위해 상수를 리터럴이라는 다른 이름으로 불러야만 했다.
리터럴의 타입과 접미사
종류 | 리터럴 | 접미사 |
---|---|---|
논리형 | false, true | 없음 |
정수형 | 123, 0b0101, 077, 0xFF, 100L | L |
실수형 | 3.14, 3.0e8, 1.4f, ox1.op-1 | f, d |
문자형 | 'A', '1', '\n' | 없음 |
문자열 | "ABC", "123", "A", "true" | 없음 |
int small = 100;
long big = 100_000_000_000L;
float pi = 3.14f;
double rate = 1.618d;
float pi = 3.14; //에러. float타입 변수에 double타입 리터럴 지정 불가
double rate = 1.618; //OK
타입이 달라도 저장범위가 넓은 타입에서 좁은 타입의 값을 저장하는 것은 허용된다.
int i = 'A'; // OK. 유니코드인 65가 변수 i에 저장된다. long l = 123; // OK. double d = 3.14f; // OK.
문자 리터열과 문자열 리터열
String str = ""; // OK.
char ch = ''; // 에러.
char ch = ' '; // OK. 공백 문자(blank)로 변수 초기화
지시자 | 설명 |
---|---|
%b | boolean 형식으로 출력 |
%d | 정수 형식으로 출력 |
%o | 8진수 정수의 형식으로 출력 |
%x 또는 %X | 16진수 정수의 형식으로 출력 |
%f | 소수점 형식으로 출력 |
%c | 문자형식으로 출력 |
%s | 문자열 형식으로 출력 |
%n | 줄바꿈 기능 |
%e 또는 %E | 지수 표현식의 형식으로 출력 |
'%n' 대신 '\n'을 대신 사용해도 되지만, OS마다 줄바꿈 문자가 다를 수 있기 떄문에 '%n'을 사용하는 것이 더 안전하다.
기본형과 참조형간의 형변환은 불가능하다.
표현범위가 좁은 타입에서 넓은 타입으로 형변환하는 경우에는 값 손실이 없으므로 두 타입 중에 표현범위가 더 넓은 쪽으로 형변환된다.
char와 short는 둘 다 2byte의 크기 이지만 범위가 서로 달라서 자동 형변환이 수행될 수 없다.