소수점이 없는 숫자를 저장하는 타입
메모리 사용 크기와 저장되는 값의 범위에 따라 총 5가지 타입이 있다. 모든 타입은 부호가 있는(Signed) 정수이며, 기본적으로 2진수 보수법을 사용한다.
| 타입 | 메모리 크기 | 저장 가능 범위 (대략) | 비고 |
|---|---|---|---|
| byte | 1 byte (8 bits) | -128 ~ 127 | 데이터 전송, 이미지 처리 등 |
| short | 2 bytes (16 bits) | -32,768 ~ 32,767 | C언어와의 호환성 (잘 사용 안 함) |
| char | 2 bytes (16 bits) | 0 ~ 65,535 | 유니코드(문자) 저장용 (음수 불가) |
| int | 4 bytes (32 bits) | 약 -21억 ~ 21억 | 정수 연산의 기본 타입 |
| long | 8 bytes (64 bits) | 약 -922경 ~ 922경 | 아주 큰 숫자를 다룰 때 사용 |
코드에서 직접 입력하는 값을 ‘리터럴’이라고 한다.
0b 또는 0B로 시작 (예: 0b1011)0으로 시작 (예: 013)11)0x 또는 0X로 시작 (예: 0xB)_): 큰 숫자를 읽기 편하게 구분자를 넣을 수 있다. (예: int money = 1_000_000;)자바 컴파일러는 기본적으로 정수 리터럴을 int 타입으로 간주한다. int 범위를 벗어나는 큰 숫자를 long에 저장할 때는 숫자 뒤에 L(또는 l)을 반드시 붙여야 한다.
long balance = 3000000000L; // L이 없으면 컴파일 에러 발생
타입이 허용하는 최소값보다 작아지거나(언더플로우), 최대값보다 커지면(오버플로우) 엉뚱한 값(최소값이나 최대값의 반대편)이 출력된다.
byte 변수에 127이 저장된 상태에서 1을 더하면 -128이 된다.