기본(원시:Primitive) 타입
정수
byte 타입
- 1byte
- 저장되는 값의 범위 : -2^7 ~ (2^-1) (-128~127)
- 색상 정보 및 파일 또는 이미지 등의 이진(바이너리) 데이터를 저장할 때 주로 사용.
- 이진수 0과 1의 8개로 이루어진 8bit의 크기를 가지는데, 최상위 비트(MSB:Most Significant Bit)는 정수값의 부호를 결정.
- MSB가 0이면 양수, 1이면 음수. MSB를 제외한 나머지 7개의 bit로 정수값이 결정.
- 계산방법은 2진수의 보수 계산법을 참고하기.
- 저장되는 값을 벗어나게 되면 최소값 또는 최대값으로 다시 시작하게 된다. (-128에서 -1을 빼면 127)
char 타입
- 2byte
- 저장되는 값의 범위 : 0
2^16 (유니코드: \u0000\uFFFF, 0~65535) - 자바는 모든 문자를 유니코드(Unicode)로 처리하는데, 2byte에 하나의 유니코드를 저장.
- 유니코드는 음수가 없기 때문에, char 타입의 변수에는 음수 값을 저장할 수 없음.
- char 변수에는 '' 로 감싼 문자가 아니라, 직접 유니코드 정수값을 저장할 수 있음.
- 프로그램 코드에서 char 변수에 저장된 유니코드를 알고 싶다면, char 타입 변수를 int 타입 변수에 저장해보면 됨.
- char c = ''; 이렇게 문자를 대입하지 않고 초기화 목적으로 사용한다면 에러가 발생.
- char c = ' '; 초기화가 목적이라면 이렇게 공백을 포함해서 초기화 해줘야 함.
Short 타입
- 2byte
- 정수값을 저장할 수 있는 데이터 타입.
- 저장되는 값의 범위 : -2^15
(2^15-1) (-32,76832767) - C언어의 호환을 위해 사용되지만, 자바에서는 비교적 잘 사용되지는 않음.
int 타입
- 4byte
- 저장되는 값의 범위 : -2^31
(2^31-1) (-2,147,483,6482,147,483,647) - 자바에서 정수 연산을 위한 기본 타입
- 정수값을 직접 코드에서 입력할 경우, 8진수는 앞에 '0'을 붙이고, 16진수는 '0x'를 붙이면 된다.
long 타입
- 8byte
- 저장되는 값의 범위 : -2^63~(2^63-1)
- 수치가 큰 데이터를 다루는 프로그램에서는 long타입이 필수적.
- long 타입의 변수를 초기화할 때는 정수값 뒤에 소문자 'l'이나 대문자'L'을 붙일 수 있음. (long데이터임을 알려주기 위해)
### 실수 - 메모리 사용 크기에 따라, float와 double이 있음. - 정수 타입과는 다르게 저장 방식 때문에, 정수 타입보다 훨씬 더 큰 범위의 값을 저장할 수 있음. - 부동 소수점 방식으로 저장됨. ( 부호, 가수, 지수의 활용 ) -
float 타입
- 4byte
- 저장되는 값의 범위 : (+/-)1.4E-45 ~ (+/-)3.4028235E38
- 부호(1bit) + 지수(8it) + 가수(23bit) = 32bit = 4byte
- float 타입 변수에 저장하려면, 뒤에 소문자'f' 나 대문자 'F'를 붙여야 함.
double 타입
- 8byte
- 저장되는 값의 범위 : (+/-)4.9E-324 ~ (+/-)1.79796931348623157E308
- 부호(1bit) + 지수(11bit) + 가수(52bit) = 64bit = 8byte
- 자바에서 실수 리터럴의 기본 타입
논리 타입(boolean)
- 1byte
- 논리값(true/false)를 저장.
String은 기본 타입이 아니다! String은 클래스 타입이고, String 변수는 참조 변수이다. 즉, 문자열을 String 변수에 대입하면 문자열이 변수에 직접 저장되는 것이 아니라, String 객체가 생성되고, String 변수는 String 객체의 번지를 참조하게 된다.