JAVA
Generic 과 WrapperClass(Boxing / Unboxing)에 대해서
구름이팡팡
2022. 1. 6. 20:34
728x90
<제네릭을 이용하는 이유>
컴파일 과정에서 미리 제네릭 타입을 이용함으로써 사전에 데이터 타입을 잘 못쓰는 것을 막아준다.
//제네릭 아닐 때
ArrayList list = new ArrayList();
list.add("a");
String a = (String)list.get(0); //캐스팅 필요
//제네릭 이용할 때
ArrayList<String> list = new ArrayList();
list.add("a");
String a = list.get(0); //캐스팅 필요없음
- 장점
1. 실행 시 에러보다 컴파일 시 미리 타입을 체크해서 에러를 방지할 수 있다.
2. 타입 변환을 따로 할 필요가 없어 속도를 향상시켜 준다.
- 단점
※ 기본타입 불가능 => Boxing 필요!
=> Wrapper(포장)Class를 이용 해야한다. (heap영역을 이용하기 때문에 속도가 떨어짐)
<Boxing>
: 기본타입을 포장객체로 만드는 과정
기본타입(byte, char, short, int, long, float, double, boolean)을
WrapperClass(Byte, Character, Short, Integer, Long, Float, Double, Boolean)로 포장
cf) 기본타입은 스택 영역, WrapperClass는 힙 영역 이용(힙 영역이 더 속도가 느리다)
//자동 박싱
Integer a = 10; //대입
=> int타입의 값을 Integer 클래스 변수에 대입하면 자동 박싱이 일어나 힙 영역에 Integer 객체 생성
//자동 언박싱
Integer a = new Integer(50);
int b = a; //1.대입하면 자동언박싱
int c = a + 50; //2.연산하면 자동언박싱
<Unboxing>
: 반대로 포장객체에서 기본타입의 값을 얻어내는 과정
728x90