자바를 공부하던 중, boolean은 null값을 허용하지 않는 것과 달리 Boolean은 null값이 허용된다는 사실을 알게 되었다.
boolean과 Boolean의 차이에 대해 찾아보니, boolean은 원시타입인 것과 달리 Boolean은 참조타입이라고 한다...!
이 글에서는 원시타입과 참조타입에 대해 조금 더 정리해보려고 한다.
int age = 25;
String name = "커피";
이 경우, age와 name의 값은 각각 다음과 같은 영역에 저장된다.
스택 영역 | 힙 영역 |
---|---|
int age = 25 | |
String name = 1111번지 | 1111번지 : "커피" |
public class BoxingUnBoxing {
public static void main(String[] args) {
// Boxing
int i = 10;
Integer integer = i; // 원시타입 i를 참조타입 integer에 대입
System.out.println(i);
System.out.println(integer);
// UnBoxing
Integer integer2 = 20;
int i2 = integer2; // 참조타입 integer2를 원시타입 i2에 대입
System.out.println(i2);
System.out.println(integer2);
}
}
결과
10
10
20
20
int i = null; // 원시타입이므로 불가능
Integer integer = null; // 가능
List<int> i2; // 원시타입이므로 불가능
List<Integer> integer2; // 가능
원시타입이 사용하는 메모리 | 참조타입이 사용하는 메모리 |
---|---|
boolean - 1bit | Boolean - 128bits |
byte - 8bits | Byte - 128bits |
short, char - 16bits | Short, Character - 128bits |
int, float - 32bits | Integer, Float - 128bits |
long, double - 64bits | Long, Double - 196bits |
원시타입은 성능과 메모리 면에서 장점이 있으므로 원시타입 사용을 먼저 고려해보면 좋을 것 같다.
다만 null이나 제네릭 타입을 사용할 경우에는 참조타입을 사용해야 한다.
참고 링크