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 |