ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 래퍼 클래스(Wrapper Class)란?
    Java 2022. 1. 20. 00:01

    Optional에 대해 알아보고자 했을 때 래퍼 클래스라는 개념이 나와 알아보게 되었습니다.

     

    래퍼 클래스(Wrapper Class)란?

    간단하게 본론부터 말하자면 래퍼 클래스란 기본 타입을 객체화 클래스화 하여 클래스의 장점을 갖게 합니다.

     

    Wrapper는 번역해보면 포장지, 싸개 등의 의미를 가집니다.

    의미 해석함으로써 통해 포장을하는 클래스? 어떤 것을 감싸는 클래스?라고 추측할 수 있습니다.

     

    기본 타입이란?

    자바의 자료형은 기본 타입과 참조 타입으로 나누어 집니다.

    기본 타입 : byte, short, char, int, long, float, double, boolean

    참조 타입 : class, interface,...

     

    여기까지 이해하셨다면 래퍼 클래스는 int, float, double, boolean 등 기본 타입을 객체화하는구나라고 이해할 수 있습니다.

     

    그러면 객체화를 왜 하는 걸까요? (래퍼 클래스가 필요한 이유)

    예를 들어, 메서드의 인수로 객체 타입만이 요구된다면 기본 타입의 데이터를 그대로 사용할 수 없습니다.

    이때에는 기본 타입의 데이터를 먼저 객채로 변환한 후 작업을 수행해야 합니다. 

     

    예를 들어 아래와 같은 코드를 봤을 때 함수 인자로 기본 타입이 사용될 수 없습니다.

    public void printEverything (Object obj){
    	System.out.println(obj);
    }

     

    래퍼 클래스의 사용

    래퍼 클래스는 산술 연산을 위해 정의된 클래스가 아니므로, 인스턴스에 저장된 값을 변경할 수 없습니다.

    단지, 값을 참조하기 위해 새로운 인스턴스를 생성합니다.

     

    위의 그림과 같이 기본 타입의 데이터를 래퍼 클래스의 인스턴스로 변환하는 과정(객체화하는 과정)을 박싱이라고 합니다.

    반대로 하는 과정을 언 박싱이라고 합니다.

     

    박싱과 언박싱(Boxing & UnBoxing)

    Integer num = new Integer(1); //박싱
    int n = num.intValue(); //언박싱

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

    오토 박싱과 오토 언박싱(AutoBoxing & AutoUnBoxing)

    Character ch = new Character('X') // 박싱
    Character ch = 'X'; //오토 박싱
    
    char  c = ch.charValue(); //언박싱
    char c = ch; //오토 언박싱

     

     

     

     

    출처

    http://tcpschool.com/java/java_api_wrapper

     

    코딩교육 티씨피스쿨

    4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

    tcpschool.com

     

    댓글

Designed by Tistory.