박싱(Boxing)
값 형식을 참조 형식으로 변환하는 것을 박싱(Boxing)
int i=123;
object o=i; // 박싱(묵시적 변환)
스택(Stack)에 있는 데이터가 힙(Heap)으로 복사
언박싱(Unboxing)
참조 형식을 값 형식으로 변환하는 것을 언박싱(Unboxing)
int i=123; //값 형식
object o=i; //박싱
int j=(int) o //언박싱(묵시적 변환)
힙(Heap)에 있는 데이터가 스택(Stack)으로 복사
박싱과 언박싱 장점
- 사용상의 편의성
- 대표적으로 System.Collections.ArrayList 클래스가 대표적인 복합자료형
- 타입에 관계없이 추가가능 => Add의 메서드가 Object 타입의 매개변수를 취하고 있다
박싱과 언박싱 단점
- 박싱할때는 완전히 새로운 개체를 만들며,이러한 작업에는 할당 작업보다 최대 20배의 시간이 걸림
- 언박싱할때는 캐스팅 과정에서 할당 작업보다 4배의 시간이 걸림