자바에는 크게 두 가지 데이터 타입이 있다.
Primitive Data 와 Wrapper Class 이다.
여기서 잠깐 Primitive data를 복습하자..
primitive Type 기본형 타입이다.
기본값이 있기 때문에 Null은 존재하지 않는다.
만약 기본형 타입에 Null을 넣고 싶으면 Wrapper Class를 이용한다.
가벼운 데이터
실제 값을 저장하는 곳으로 Stack 메모리를 이용한다.
추가로 Reference Type은
빈 객체를 의미하는 Null이 존재한다.
값이 저장되어 있는 주소값을 저장하는 곳으로 실제 메모리는 Heap 메모리에 저장되고 주소값은 스택 메모리에 저장된다.
배열, 열거, 클래스, 인터페이스
다시 원래대로 돌아와서
Primitive : Boolean, char, byte, short, int, long, float, double
Wrapper : Boolean, Character, Byte, Short, Integer, Long, Float, Double
Primitive Data 와 Object Data 가 존재한다.
Object data는 Reference type으로 지정한다.
Primitive Data와 Object Data는 노는 물이 달라서 호환이 안 된다.
그래서 Wrapper Class를 통해 Primitive Data를 Object Data화 한다.
J2SE 5 이전에는 직접 명시하여 데이터 타입을 바꿔야했다.
그러나 J2SE 5 이후에는
자동으로 Primitive Data와
Wrapper Class로 생성된 Object Data가
서로 직접 호환이 가능해졌다.
Autoboxing
compiler가 primitive data 를 Object data 로 자동으로 변환시키는 것
예를 들어서 24값을 가진 int를 24값을 가진 Integer object로 변환한다.
primitive data는
int a = 24 ; 이런 식으로 표시하지만
object data는
Integer b = new Integer(a) ;
이렇게 객체로 만든다.
J2SE 5 이후로는
Integer b = a ;
이렇게 써도 된다.
Unboxing
unboxing은 반대로
J2SE 5 이전에는
Integer a = new Integer(24);
int b = a.intValue();
이렇게 직접 만들어서 사용했지만
이후에는
Integer a = new Integer(24);
int b= a;
이렇게만 해도 된다.
정리
autoboxing 은 primitive data를 wrapper object로 변환하는 과정
가벼운 것을 무거운 것으로 바꾸니 boxing하는 것으로 이해
unboxing은 wrapper object 를 primitive data로 변환하는 과정
무거운 것을 가벼운 것으로 바꿔야하니 unboxing 한다고 이해하자
이 기능은 깔끔하고 이해가 빠른 코드를 작성할 수 있다.
'컴퓨터공학 > Java' 카테고리의 다른 글
CS> String 과 String buffer의 차이점은?? (0) | 2021.07.02 |
---|---|
CS> 자바에서 Stack 과 Heap의 메모리 구조 차이점은?? (0) | 2021.07.02 |
CS> JVM JRE JDK 이것은 다 무엇?? (0) | 2021.07.01 |
CS> JVM은 무엇이고 왜 자바를 Platform Independent 언어라고 할까? (0) | 2021.07.01 |
JAVA 소켓 네트워크 프로그래밍을 이용한 채팅 원리 이해 (0) | 2021.03.11 |