Wrapper 클래스란?

:자바 기본 타입(자료형)을 클래스화시키는 것입니다. 쉽게 이야기해서 기본 자료형을 class를 입혀서 참조변수 처럼 사용할 수 있게 말하는 것을 의미합니다.

 

- 원칙적으로 보면 int, String와 같은 기본자료형으로 Object 를 상속 받지 않으므로 error 를 내야하지만 기본 자료형을 Object에 입력으로 전달하고 싶을 때 wrapper로 사용하면 error 없이 편리하게 사용할 수 있습니다.

 

 

 

기본 타입 값으로 Wrapper 객체 생성

Integer i = new Integer(10);
Character c = new Character(‘c’);
Double f = new Double(3.14);
Boolean b = new Boolean(true);

 

박싱(boxing)

: 기본 타입의 값을 Wrapper 객체로 변환합니다.

 

언박싱(unboxing)

: Wrapper 객체에 들어 있는 기본 타입의 값을 빼냅니다.

 

 

package exam06;

public class BoxingUnBoxing {
	public static void main(String[] args) {
	// Wrpper class : 기본 자료형을 class 로 감싸서 참조 자료형으로 사용 할 수 있도록 한다. 
	
		
		Integer iValue = new Integer(10); // Boxing 
		Double dValue = new Double(3.14); // Boxing
		
		int num = iValue.intValue(); // UnBoxing 
		// intValue : int 자료형의 담긴 값을 기본 자료형으로 반환한다. 	
		System.out.println(num);
		
		double num2 = dValue.doubleValue();// UnBoxing 
		// doubleValue : double 자료형의 담긴 값을 기본 자료형으로 반환한다.
		System.out.println(num2);

		
		iValue = new Integer(iValue.intValue()+10); 
		System.out.println(iValue.intValue());
	}

}

 

문자열을 기본 데이터 타입으로 변환

int i = Integer.parseInt("123"); 		// i = 123
boolean b = Boolean.parseBoolean("true"); 	// b = true
double f = Double.parseDouble("3.14" ); 	// d = 3.14

 

● Auto Boxing & Auto Unboxing (자바제공 Wrapper 클래스를 사용하는 것이 좋은 이유)

 

Auto Boxing : 기본 자료형 데이터가 자동으로 Wrapper 인스턴스로 감쌉니다.

Auto UnBoxing : Wrapper 인스턴스에 저장된 데이터가 자동으로 꺼내집니다.

package exam07;

public class AutoBoxingAutoUnboxing2 {
	public static void main(String[] args) {
		
		Integer num1 = 10; // AutoBoxing 에 의해서  기본 자료형 처럼 사용. 
		Integer num2 = 20;
		
		num1++;   // AutoUnBoxing // num1 = num1.intValue() + 1; (원래 이렇게 구현했어야 했다.)
		System.out.println(num1);
		
		num2 += 3;// AutoUnBoxing  // num2 = num2.intValue() + 3; (원래 이렇게 구현했어야 했다.) 
		System.out.println(num2);
		
		int addResult = num1 + num2; // int addResult = num1.intValue() + num2.intValue();
	    System.out.println(addResult);

	}

}

 

'빅데이터 > JAVA' 카테고리의 다른 글

[JAVA] Generics  (0) 2020.05.17
[JAVA] Calendar 클래스, Date 클래스 , Random 클래스  (0) 2020.05.17
[JAVA] Object 클래스  (0) 2020.05.17
[JAVA] 예외처리  (0) 2020.05.15
[JAVA] Abstract 클래스, Interface  (0) 2020.05.13

+ Recent posts