자바에서는 데이터 타입에 크게 두가지 원시타입과 참조타입이 있다.
원시타입은 정수, 실수, 문자, 논리 리터럴 등 실제 데이터 값을 저장하는 타입이다.
종류 | 데이터형 | 크기 | 범위 |
---|---|---|---|
논리형 | boolean | 1bit | true or false |
문자형 | char | 2byte | '\u0000' ~ '\uffff' |
정수형 | byte | 1byte | -128 ~ 127 |
정수형 | short | 2byte | -32,768 ~ 32,767 |
정수형 | int | 4byte | -2,147,483,648 ~ 2,147,483,647 |
정수형 | long | 8byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
실수형 | float | 4byte | 1.4E-45 ~ 3.4028235E38 |
실수형 | double | 8byte | 4.9E-324 ~ 1.7976931348623157E308 |
참조타입은 원시타입을 제외한 타입으로, 객체의 주소를 저장하는 타입이다. 자바에서 실제 객체는 JVM의 힙 영역에 저장되며, 참조 타입 변수는 실제 객체 주소를 스택 영역에 저장한다. 그리고 객체를 사용할 때마다 참조 변수에 저장된 객체 주소를 불러와 사용한다.
Boxing은 원시타입을 참조타입으로 변환시키는 것을 말하고, Unboxing은 참조타입을 원시타입으로 변환시키는 것을 말한다.
int i = 0;
Integer integer = i;
int i = null; // 불가능
Integer integer = null; // 가능
List<int> list; // 불가능
List<Integer> list; // 가능