728x90
박싱(Boxing)과 언박싱(Unboxing)
박싱(Boxing)과 언박싱(Unboxing)은 값 형식과 참조 형식 간의 변환을 수행하는 프로세스입니다. 이러한 변환을 통해 값 형식(예: 정수, 부울, 실수 등)을 참조 형식(예: object 또는 인터페이스)으로 캐스트하고 다시 반대로 참조 형식을 값 형식으로 변환할 수 있습니다.
박싱(Boxing)
- 박싱은 값 형식을 참조 형식으로 변환하는 프로세스입니다. 이때 값 형식의 인스턴스는 힙 메모리에 새로운 객체로 복제됩니다.
- 박싱은
object
형식을 포함한 모든 참조 형식으로 수행될 수 있으며,object
형식은 모든 데이터 형식을 포괄합니다. - 박싱은 값 형식을 참조 형식으로 저장하려는 경우, 다양한 데이터 형식을 일반화된 방식으로 처리할 때 유용합니다.
int value = 42;
object boxedValue = value; // 박싱
언박싱(Unboxing)
- 언박싱은 박싱된 값을 다시 원래의 값 형식으로 변환하는 프로세스입니다. 이때 원래 값 형식으로의 복사가 수행됩니다.
- 언박싱은 박싱된 값 형식에서 원래 값 형식으로 값을 검색할 때 사용됩니다.
- 언박싱은 명시적인 캐스트 연산자를 사용하여 수행됩니다.
int unboxedValue = (int)boxedValue; // 언박싱
박싱과 언박싱은 일반적으로 성능에 부정적인 영향을 미칠 수 있으므로, 불필요한 사용은 피해야 합니다. 박싱된 값 형식을 다시 언박싱하는 작업은 오버헤드가 발생하므로 주의해야 합니다. 값 형식을 사용할 때는 참조 형식 대신 값 형식을 활용하고, 언박싱이 필요한 경우 명시적인 캐스트 연산자를 사용하여 박싥된 값을 원래 값 형식으로 변환하도록 유의해야 합니다.
728x90
반응형
'개발 > 기타' 카테고리의 다른 글
[개발 상식]인터페이스(interface)와 추상 클래스(abstaract class) (0) | 2023.11.09 |
---|---|
[개발 상식] 값 타입(Value Type)과 참조 타입(Refrence Type) (0) | 2023.11.08 |
[개발 상식]태스크(Task)와 코루틴(Coroutine) (0) | 2023.11.06 |
[개발 상식]JSON, XML, CSV의 각 장단점 (0) | 2023.11.05 |
[개발 상식]오버로딩(Overloading)과 오버라이딩(Overriding) (0) | 2023.11.04 |
댓글