본문 바로가기
CS/JAVA

[JAVA] Wrapper 클래스

728x90

 

 

 


Wrapper 클래스란?

 

Java의 자료형에는 크게 기본 자료형(Primitive Type)과 참조 자료형(Reference Type; Non-primitive Type)이 있다. Wrapper 클래스는 이 중 int, byte, char 등과 같은 기본 자료형 값을 갖는 객체를 생성하는 클래스이다. 즉, 기본 자료형의 데이터를 객체로써 표현 가능하게 해준다. 주로 Collections Framework 같이 매개변수로 객체를 요구할 때 사용된다. Wrapper 클래스는 java.lang 패키지에 포함되어 있고 각 자료형 별로 하나씩 총 8개가 존재한다.

Wrapper 클래스 중 Integer 클래스Character 클래스는 기본 자료형과 이름이 다르다.

 

 

기본 자료형 Wrapper 클래스
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

 

 

 


박싱(Boxing), 언박싱(UnBoxing)

 

 

위 그림처럼 기본 자료형을 Wrapper 클래스의 인스턴스로 변환하는 과정을 박싱(Boxing), 반대로 Wrapper 클래스의 인스턴스에서 저장된 값을 기본 자료형 데이터로 꺼내는 과정을 언박싱(UnBoxing)이라고 한다. JDK 1.5부터는 컴파일러가 이를 자동으로 처리하여 오토 박싱(AutoBoxing)과 오토 언박싱(AutoUnBoxing)을 지원한다.

 

public class WrapperTest{
	public static void main(String[] args){
		int i1 = 10;  // 기본 자료형
        
		Integer i2 = new Integer(i1);  // 박싱, i2 = 참조 자료형
      		//Integer i2 = new Integer(10);
        
        	int n = i2.intValue(); // 언박싱, n = 기본 자료형
        
        	Character cw = 'X'; // Character cw = new Character('X'); : 오토박싱
		char c = cw;        // char c = cw.charValue();           : 오토언박싱
	}
}

 


오토 박싱과, 오토 언박싱으로 Wrapper 클래스의 인스턴스와 기본 자료형 간의 값 비교가 가능하다. 하지만 Wrapper 클래스끼리 비교를 하게 되면 두 인스턴스의 주소 값을 비교하게 되므로 equals() 메소드를 사용해야 한다.

 

public class WrapperCompareTest{
	public static void main(String[] args){
		int i = 10;  // 기본 자료형
		Integer num1 = new Integer(10);  // 참조 자료형
      		Integer num2 = 10;  // 참조 자료형
        
        	System.out.println(i == num1);  //true
        	System.out.println(num1 == num2);  //false
        	System.out.println(num1.equals(num2));  //true
	}
}

 

 

 


 문자열 -> 기본 자료형

 

Wrapper 클래스에는 "parse타입" 명으로 static 메소드가 정의되어 있다. 해당 메소드를 사용해 문자열을 기본 자료형으로 변환할 수 있다. 

 

public class WrapperParseTest{
	public stativ void main(String[] args){
    		byte b = Byte.parseByte("10");
        	int i = Integer.parseInt("1234");
        	double d = Double.parseDouble("3.14");
        	boolean bool = Boolean.parseBoolean("true");
            
        	//Valueof
        	Integer num = Integer.valueOf("123");
	}
}
Wrapper 클래스에는 "valueOf" 라는 static 메소드도 정의되어 있다. 해당 메소드는 문자열을 Wrapper 클래스 인스턴스로 변환해준다.

 

 

 


📝 요약

◾ Wrapper 클래스란 기본 자료형을 참조 자료형(객체)로 생성해주는 클래스이다. 

◾ Wrapper 클래스는 Collections Framework 같이 매개변수로 객체를 요구할 때 사용되고 문자열을 기본 자료형으로 변환할 수 있다.

 

 

 


📃 Ref

728x90
반응형

'CS > JAVA' 카테고리의 다른 글

[JAVA] 예외 클래스  (0) 2021.08.09
[JAVA] JVM 구조와 메모리  (0) 2021.07.26
[JAVA] 객체와 클래스, 그리고 인스턴스의 차이  (0) 2021.07.24