ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] Wrapper Class (래퍼 클래스)
    Java 2024. 5. 13. 21:19

    Wrapper Class(래퍼 클래스)

    • 자바의 기본 타입을 클래스 화한 변수형 객체로써 변수를 객체처럼 활용하기 위해 사용된다.
    • int, double, boolen등은 객체가 아니다 그러므로 객체로 다루어야 할 때 사용한다.
    • 예를 들어, 객체 기반의 컬렉션에서 기본 데이터 유형을 사용하기위해 Wrapper클래스를 사용한다.
    • 래퍼 클래슨느 각각의 타입에 해당하는 데이터를 인수로 전달받은 후, 해당 값을 가지는 객체로 만들어 준다.
    • 즉 기본 타입을 객체 형태로 '포장'하는 것을 의미한다.
    • 로직이 필요하거나 컬렉션, 제네릭 활용으로 타입 안정성을 보장하기 위해서 사용된다.
    • 넓은 범위의 유틸리티 메서드를 활용할 수 있다.
    • java.lang 패키지에서 제공된다.

     

    기본타입 | 래퍼 클래스

     

    byte | Byte

    short | Short

    int | Interger

    long | Long

    float | Float

    double | Double

    char | Character

    boolean | Boolean

     


    Boxing (박싱) 과 Unboxing (언박싱)

    • Primitive type과 Wrapper class는 상호 변환이 이루어지는데, 이러한 과정을 Boxing과 Unboxing이라고 한다.
    • Java 5부터 도입되었으며, 기본 데이터 유형과 래퍼 클래스 간의 변환 작업을 보다 편리하게 해주는 역할을 한다.

    Boxing (박싱)

    • 기본 타입에서 wrapper 클래스로 전환한다.
    • 기본 데이터 유형의 값이 래퍼 클래스의 객체로 필요한 곳에 사용될 때 자동으로 박싱이 발생한다.

    Unboxing (언박싱)

    • wrapper 클래스 객체를 기본 타입으로 전환한다.
    • 래퍼 클래스의 객체가 기본 데이터 유형이 필요한 곳에 사용될 때 자동으로 언박싱이 발생한다.
    • "(자료형)Value()" 메서드를 사용해 언박싱을 할 수 있다.

    Auto Boxing (오토 박싱)과 Auto Unboxing (오토 언박싱)

    • JDK 1.5부터 박싱과 언박싱이 필요한 상황에서 자바 컴파일러가 이를 자동으로 처리해 준다.

    Ex)

    // Boxing and Unboxing
    
    Integer num = new Interger(17); // 박싱
    int n = num.intValue(); // 언박싱
    
    ------------------------------------------
    
    // AutoBoxing and AutoUnboxing
    
    Integer num = 17 // Integer num = new Integer(17); : 오토박싱
    int n = num; // int n = num.intValue(); // 오토언박싱
    • 오토 박싱을 이용하면 new키워드를 사용하지 않고도 자동으로 인스턴스를 생성할 수 있다.  
    • 래퍼 클래스도 객체이기 때문에 동등 연산자를 사용하게 되면, 두 인스턴스의 값을 비교하는 것이 아니라 두 인스턴스의 주소값을 비교한다.

    Summary

    • WrapperClass : 기본 타입을 객체 형태로 '포장'하는 것을 의미한다.
    • boxing : 기본 타입에서 wrapper 클래스로 전환한다.
    • unboxing : wrapper 클래스 객체를 기본 타입으로 전환한다.
    • autoboxing 과 autounboxing을 사용하여 new키워드를 사용하지 않고도 자동으로 인스턴스를 생성할 수 있다.
kimjihoon