본문 바로가기

안녕하세요!

프로그래밍 언어/Java

[ Java ] What is the Wrapper Class?


 

래퍼 클래스

출처 : https://tcpschool.com/java/java_api_wrapper


 

래퍼 클래스(Wrapper Class)

프로그램에 따라 기본 타입의 Data를 Object로 취급해야 하는 경우 사용한다.

 

만약 메서드 인자 값으로 요구되는 타입이 Object일 때,

기본 타입의 Data를 그대로 사용할 수 없기 때문에

 Data 타입을 Object로 변환하여 작업을 진행해야 한다.

기본 타입 래퍼 클래스
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

 

즉, Wrapper Class는

위 표와 같은 8개의 기본 타입에 해당하는 Data를

Object로 포장해 주는 Class인 것이다.

 

박싱(Boxing)과 언박싱(UnBoxing)


 


 

Wrapper Class는 산술 연산을 위해 정의된 Class가 아니기 때문에

Instance에 저장된 값을 변경할 수없다.

다만, 값을 참조하기 위해 새로운 Instance 생성 및 생성된 Instance 값만을 참조할 수 있다.  

 

Boxing 기본 타입의 Data를 Wrapper Class의 Instance로 변환하는 과정
UnBoxing Wrapper Class의 Instance에 저장된 값을 다시 기본 타입의 데이터로 꺼내는 과정

 

오토박싱(AutoBoxing)과 오토 언박싱(AutoUnBoxing)


 

Integer num = new Integer(100);			// Boxing
int n		= num.intValue();		// UnBoxing
System.out.println(n)				// 결괏값 = 100

 

Character ch = 'X';		// Character ch = new Character('X') 	: AutoBoxing
char	  c	 = ch;		// char 	 c  = ch.charValue();	: AutoUnBoxing
System.out.println(c);  	// 결괏값 = X

 

JDK 1.5부터 Boxing과 UnBoxing를 자바 컴파일러가 자동으로 처리를 해준다.

이를 오토 박싱오토 언박싱이라고 부른다.

 

equals()


 

Public class WrapperClass {
	public static void main(String[] arg) {
    	
        Integer num1 = new Integer(100);
        Integer num1 = new Integer(1000);
        Integer num1 = new Integer(100);
        
        System.out.println(num1 < num2);		// 결괏값 = true
        System.out.println(num1 == num2);		// 결괏값 = false
        System.out.println(num1.equals(num3));		// 결괏값 = true
        
    }
}

 

WrapperClass는 Object이기 때문에 동등 연산자(==)를 사용하게 되면

두 Instance 값을 비교하는 것이 아니라, 두 Instance의 주솟값을 비교하게 된다.

따라서 Instance에 저장된 값의 동등 여부를 판단하기 위해서는 equals() 메서드를 사용해야 한다.

반응형

 

728x90
반응형

loading