# Table of Contents

# Wrapper 클래스

Wrapper 클래스를 사용하면 원시 타입을 객체로 취급할 수 있다. 예를 들면 제너릭을 사용할 때는 타입 파라미터로 참조 타입만 전달할 수 있는데 이 때 Wrapper 클래스를 사용할 수 있다.

class Person<T> {
    T data;

    public Person(T data) {
        this.data = data;
    }
}
Person<int> person = new Person<int>(3);    // Error. Type argument cannot be of primitive type

이럴 때 Wrapper 클래스를 사용할 수 있다. 즉 Wrapper 클래스원시 타입을 참조 타입으로 취급하기 위해 사용한다.

Person<Integer> person = new Person<Integer>(3);

Wrapper 클래스java.lang 패키지에 포함되어있으며, 원시 타입에 대응하는 Wrapper 클래스가 존재한다.

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

# 박싱과 언박싱

원시 타입의 값으로 Wrapper 클래스를 만드는 것을 박싱(Boxing)이라고 한다.

Integer age = new Integer(30);
Double height = new Double(165.3);

Wrapper 클래스에서 원시 타입의 값을 얻어내는 것을 언박싱(Boxing)이라고 한다. Wrapper 클래스의 xxxValue() 메소드를 사용하여 언박싱을 할 수 있다.

int _age = age.intValue();
double _height = height.doubleValue();

# 오토 박싱과 오토 언박싱

직접적으로 박싱/언박싱을 하지 않아도 자동으로 박싱/언박싱이 일어나기도 한다. Wrapper 클래스에 원시 타입의 데이터를 할당할 경우 오토 박싱이 된다.

Integer age = 30;

Wrapper 클래스의 객체를 원시 타입에 할당할 때도 오토 언박싱이 된다.

int _age = age;

# Wrapper 타입 형변환

다른 타입으로 형변환할 때도 xxxValue()메소드를 사용할 수 있다.

Double height = new Double(177.32);

System.out.println(height.intValue());  // 177
System.out.println(height.longValue());  // 177
System.out.println(height.floatValue());  // 177.32
System.out.println(height.doubleValue());  // 177.32

# 기본타입을 문자열로 변환

# + 연산자

+연산자를 사용하면 원시 타입을 문자열로 변경할 수 있다.

String age = 30 + "";
String weight = 70.3 + "";

# String.valueOf()

String.valueOf()를 사용해도 원시 타입을 문자열로 변경할 수 있다.

String age = String.valueOf(30);
String weight  = String.valueOf(70.5);

# Wrapper.toString()

Wrapper 클래스의 toString()을 사용하면 원시 타입을 문자열로 변경할 수 있다.

String age = Integer.toString(30);
String weight = Double.toString(70.3);

# 문자열을 기본타입으로 변환

# Wrapper.valueOf()

Wrapper 클래스의 valueOf()메소드는 문자열을 Wrapper 클래스로 변환한다.

Integer age = Integer.valueOf("34");
Double weight = Double.valueOf("70.3");
Boolean isMarried = Boolean.valueOf("false");

# Wrapper.parseXXX()

Wrapper 클래스의 parseXXX()메소드는 문자열을 원시타입으로 변환한다.

int age = Integer.parseInt("34");
double weight = Double.parseDouble("70.3");
boolean isMarried = Boolean.parseBoolean("false");

# Wrapper 클래스와 값 비교

Wrapper 클래스는 값 비교를 위한 compare()메소드를 제공한다.

System.out.println(Integer.compare(1, 2));  // -1
System.out.println(Integer.compare(2, 2));  // 0
System.out.println(Integer.compare(2, 1));  // 1
System.out.println(Double.compare(1.0, 1.9));  // -1
System.out.println(Double.compare(1.9, 1.9));  // 0
System.out.println(Double.compare(1.9, 1.0));  // 1