-
[Camel][Java] Wrapper 클래스에 대해서Java/개념 정리 2020. 2. 28. 15:45
Wrapper 클래스란?
Wrap이라는 영어를 해석해보면 '감싸다'라는 의미를 가지고 있습니다. 그렇습니다. Wrapper 클래스란 감싸는 클래스라는 의미를 가지고 있습니다. 이런 Wrapper 클래스는 기본 자료형 데이터를 인스턴스로 표현을 하고 싶을 때 사용합니다. 물론 기본 자료형 데이터를 인스턴스로 표현하기 위해 직접 클래스를 정의해도 되지만 Wrapper 클래스를 사용하면 이러한 불필요한 작업을 줄일 수 있습니다. Wrapper 클래스의 종류는 다음과 같습니다.
Boolean - Boolean( boolean value )
Character - Character( char value )
Byte - Byte( byte value )
Short - Short( short value )
Integer - Integer( int value )
Long - Long( long value )
Float - Float( float value )
Double - Double( double value )
모든 기본 자료형에 대해 Wrapper 클래스가 정의되어 있습니다. 그리고 Character 클래스를 제외한 모든 Wrapper 클래스에는 String 참조 값을 인자로 받는 생성자들이 정의되어 있기에 문자열로 표현된 데이터를 기반으로 인스턴스 생성이 가능합니다.
Integer num = new Integer("123");
Wrapper 클래스의 기능
Wrapper 클래스에는 여러가지 메소드를 사용한 기능들이 있습니다. 그 중에서 가장 기본이 되고 중요한 기능은 Boxing과 Unboxing이 있습니다.
Boxing & Unboxing
Boxing은 기본 자료형 데이터를 인스턴스화 시키는 작업입니다. 즉, Boxing은 인스턴스의 생성에 의해 이루어집니다. 그렇다면 Unboxing은 무엇일까? 그렇습니다. Unboxing은 Boxing의 반대되는 작업을 수행합니다. 인스턴스에 저장되어 있는 기본 자료형 데이터를 가져오는 작업을 하는 것이 Unboxing입니다.
Integer num = new Integer(123); // Boxing num = new Integer(num.intValue()+100); // Unboxing
Wrapper 클래스의 인스턴스에 저장된 값은 변경이 불가능합니다. 하지만 위의 코드의 Unboxing 작업을 보면 값의 변경이 일어나는 것이라고 생각할 수 있습니다. 이 작업은 값의 변경이 아닌 변경할 값을 저장하는 새로운 인스턴스를 생성 및 참조하는 것입니다.
Auto Boxing & Auto Unboxing
Auto라는 단어를 보고 바로 알 수 있듯이 Auto Boxing과 Auto Unboxing은 자동으로 처리되는 Boxing과 Unboxing입니다. Java 5.0 이후 추가된 기능입니다.
Integer num1 = 123; // Auto Boxing int num2 = num1; // Auto Unboxing
위의 코드를 확인해보면 Integer형 참조변수가 있어야할 위치에 int형 데이터가 오게되면서 Auto Boxing이 이뤄집니다. 그리고 반대로 int형 데이터가 와야할 위치에 Integer형 참조변수가 오게되면 Auto Unboxing이 이뤄집니다. 이와 같은 Auto Boxing과 Auto Unboxing으로 인해 Wrapper 클래스의 인스턴스로 산술연산이 가능해지게 됩니다.
'Java > 개념 정리' 카테고리의 다른 글
[Camel][Java] Math 클래스 & Random 클래스 (0) 2020.02.28 [Camel][Java] BigInteger & BigDecimal 클래스 (0) 2020.02.28 [Camel][Java] JVM(가상머신)의 메모리 모델 (0) 2020.02.27 [Camel][Java] 예외처리 (feat. try~catch문) (0) 2020.02.24 [Camel][Java] Inner , Local , Anonymous 클래스란? (0) 2020.02.24