늦은 프로그래밍 이야기

Wrapper 클래스 본문

내일배움캠프/Java 심화

Wrapper 클래스

한정규 2022. 11. 30. 20:48

래퍼 클래스 (Wrapper Class)

 - 8개의 기본 타입에 해당하는 데이터를 객체로 포장해 주는 클래스. (java.lang 패키지에 포함)

 - 프로그램에 따라 기본 타입의 데이터를 객체로 취급해야 하는 경우가 있다.

 - 예를 들어, 메소드의 인수로 객체 타입만이 요구되면, 기본 타입의 데이터를 먼제 객체로 변환한 후 작업을 수행해야 한다.

 

종류

 - Integer 클래스와 Character 클래스만 기본 타입과 이름이 다름.

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

Auto Boxing, Unboxing

Auto Boxing

 - 자바 컴파일러가 기본 타입의 데이터를 그에 상응하는 래퍼 클래스로 자동 변환 시켜 주는 것.

public static void main(String[] args) {
    char ch = 'j';
    autoBoxing(ch);

    int i = 7;
    autoBoxing2(i);
}
public static void autoBoxing(Character chr) {
    System.out.println(chr.getClass() + " : " + chr);  // class.java.lang.Character : j
}
public static void autoBoxing2(Integer I) {
    System.out.println(I.getClass() + " : " + I); // class.java.lang.Integer : 7
}

 

Unboxing

 - 자바 컴파일러가 래퍼 클래스를 기본 타입의 데이터로 자동 변환 시켜 주는 것.

public static void main(String[] args) {
    Character chr = 'c';
    unBoxing(chr);

    Integer I = 2;
    unBoxing2(I);
}
public static void unBoxing(char ch) {
    System.out.println(ch);              // c
}
public static void unBoxing2(int i) {
    System.out.println(i);               // 2
}

래퍼 클래스 연산

기본연산

public static void main(String[] args) {
    Integer num1 = new Integer(7); // 박싱
    Integer num2 = new Integer(3); // 박싱

    int int1 = num1.intValue();    // 언박싱
    int int2 = num2.intValue();    // 언박싱

    Integer result1 = num1 + num2; // 10 
    Integer result2 = int1 - int2; // 4
    int result3 = num1 * int2;     // 21
    }
}

 - 기본 타입과 래퍼 클래스 간의 다양한 연산도 가능.

 

비교연산

public static void main(String[] args) {
        Integer num1 = new Integer(10);
        Integer num2 = new Integer(20);
        Integer num3 = new Integer(10);

        System.out.println(num1 < num2);       // true
        System.out.println(num1 == num3);      // false
        System.out.println(num1.equals(num3)); // true
    }
}

 - 래퍼 클래스의 비교 연산도 가능.

 - 래퍼 클래스도 객체이므로 '==' 연산자를 사용하면 두 인스턴스의 값을 비교하는 것이 아니라 두 인스턴스의 주소값을 비교하게 된다.

 - 비교 연산자 '=='을 사용해서는 안되고, .equals() 메소드를 사용해야 한다.


 

'내일배움캠프 > Java 심화' 카테고리의 다른 글

Thread  (0) 2022.12.02
추상클래스 vs 인터페이스  (0) 2022.12.01
Mutable, Immutable  (0) 2022.12.01
필드, 메소드의 구분 / Block / Scope  (0) 2022.11.30
JVM 구조  (0) 2022.11.30
Comments