본문 바로가기
개발/기타

[개발 상식]박싱(Boxing)과 언박싱(Unboxing)에 대해

by MNMNMNMN 2023. 11. 7.
728x90

박싱(Boxing)과 언박싱(Unboxing)

박싱(Boxing)과 언박싱(Unboxing)은 값 형식과 참조 형식 간의 변환을 수행하는 프로세스입니다. 이러한 변환을 통해 값 형식(예: 정수, 부울, 실수 등)을 참조 형식(예: object 또는 인터페이스)으로 캐스트하고 다시 반대로 참조 형식을 값 형식으로 변환할 수 있습니다.

 

박싱(Boxing)

  • 박싱은 값 형식을 참조 형식으로 변환하는 프로세스입니다. 이때 값 형식의 인스턴스는 힙 메모리에 새로운 객체로 복제됩니다.
  • 박싱은 object 형식을 포함한 모든 참조 형식으로 수행될 수 있으며, object 형식은 모든 데이터 형식을 포괄합니다.
  • 박싱은 값 형식을 참조 형식으로 저장하려는 경우, 다양한 데이터 형식을 일반화된 방식으로 처리할 때 유용합니다.
int value = 42;
object boxedValue = value; // 박싱

언박싱(Unboxing)

  • 언박싱은 박싱된 값을 다시 원래의 값 형식으로 변환하는 프로세스입니다. 이때 원래 값 형식으로의 복사가 수행됩니다.
  • 언박싱은 박싱된 값 형식에서 원래 값 형식으로 값을 검색할 때 사용됩니다.
  • 언박싱은 명시적인 캐스트 연산자를 사용하여 수행됩니다.
int unboxedValue = (int)boxedValue; // 언박싱

박싱과 언박싱은 일반적으로 성능에 부정적인 영향을 미칠 수 있으므로, 불필요한 사용은 피해야 합니다. 박싱된 값 형식을 다시 언박싱하는 작업은 오버헤드가 발생하므로 주의해야 합니다. 값 형식을 사용할 때는 참조 형식 대신 값 형식을 활용하고, 언박싱이 필요한 경우 명시적인 캐스트 연산자를 사용하여 박싥된 값을 원래 값 형식으로 변환하도록 유의해야 합니다.

728x90
반응형

댓글