자바 Wrapper 클래스 | 자바 입문강좌 38

자바 Wrapper 클래스

랩퍼(Wrapper) 클래스는 기본 자료형을 클래스로 만들어주는 클래스입니다. 클래스로 만들면 여러가지 이점이 있습니다. int형을 예로 들면 속도나 용량적으로는 4바이트의 int 자료형이 좋겠지만 모든 것이 객체인 자바에서 객체로 주고받아야하는 경우 Object로 형변환할 수 있는 Integer 클래스가 더 유용할 것 입니다.

참고로 int 형은 4바이트지만 Integer 로 바뀌면 숫자 뿐만 아니라 여러가지 메소드와 상수도 저장해야 하는 등 속도적으로는 불리한 부분을 예상할 수 있습니다. 한편으로 지금의 하드웨어 속도는 자바가 탄생하던 20년 전에는 상상할 수 없을 정도로 상당히 빠르기 때문에 편의적인 부분을 감안하여 Wrapper 클래스를 사용할 수 있습니다.

Wrapper 클래스 예제 int 형

package com.kay;

public class Main {
    
    public static void main(String[] args) {
//        Wrapper Class
        System.out.println("[----- Wrapper Ex -----]");

        Integer num1 = 999;
        System.out.println("num1 = " + num1.intValue());

        Integer num2 = Integer.valueOf("777");
        Integer num3 = Integer.valueOf("223");

        System.out.println("num2 = " + num2);
        System.out.println("num3 = " + num3);

        int num4 = Integer.parseInt("111");
        System.out.println("num4 = " + num4);

        Integer num5 = num4;
        System.out.println("num5 = " + num5);

        //        unboxing
        int sum = num2 + num3;
        System.out.println("sum = " + sum);
    }
}
[----- Wrapper Ex -----]
num1 = 999
num2 = 777
num3 = 223
num4 = 111
num5 = 111
sum = 1000

int 형을 대표적으로 예시를 들었습니다만 long, float 등 다른 Wrapper 클래스의 사용법에 큰 차이는 없습니다. 코드를 보면 컴파일러가 알게 모르게 자동 형변환을 하고 있습니다. 이는 Wrapper와 기본형을 사용하는데 별 차이를 못느끼게 합니다. 이는 자바 5부터 오토박싱과 언박싱 기능을 컴파일러에 탑재했기 때문입니다.

자바는 정적인(static) 언어지만 뒤로 갈수록 시대의 흐름에 뒤쳐지지 않도록 변신을 하며 오늘날에 이르렀습니다.

Wrapper 클래스를 사용하는 가장 큰 이유는 기본 자료형을 객체로 사용하기 위해서입니다. Wrapper 클래스는 Object의 Extension 으로 Object 의 메모드들도 사용할 수 있습니다. 기본자료형을 다형성의 특성에 따라 Object 로 형변환 시킨 후 객체간에 주고받을 수 있습니다. 이는 콜렉션 프레임워크에서 기본 자료형을 사용할 수 있게 합니다.

기본자료형이 효율성에서는 더 뛰어날 것 입니다. 하지만 소프트웨어 기술이 진화할 수록 자료형에 대한 요구사항이 커지기 때문에 자료형 -> 즉 객체라는 인식이 커지고 있습니다. Wrapper 클래스가 이를 지원합니다.

요약

자바 Wrapper 클래스에 대해서 알아봤습니다. 기본 자료형을 왜 객체로 변형하는가에 대한 아이디어를 얻을 수 있었습니다.

외부참고문서

Wrapper class in Java – Javatpoint

Why do we need a wrapper class in Java? (tutorialspoint.com)

Wrapper Classes in Java – GeeksforGeeks

자바 Wrapper 클래스 튜토리얼

Leave a Comment