Java 래퍼 클래스(Wrapper Class)

습토리·2025년 3월 1일

Java

목록 보기
30/32

래퍼 클래스(Wrapper Class)란?

Java에서 숫자나 문자 같은 기본형 데이터(int, double, char 등)는 객체가 아니에요. 그런데 때때로 이 기본형 데이터를 객체처럼 다뤄야 할 때가 있죠.

그럴 때 사용하는 것이 바로 "래퍼 클래스"!

쉽게 말해, 기본형 데이터를 감싸서 객체로 만들어주는 클래스예요.

기본형 ( Type)래퍼 클래스 (Wrapper Class)
intInteger
doubleDouble
charCharacter
booleanBoolean
byteByte
shortShort
longLong
floatFloat

왜 래퍼 클래스를 사용할까?

그냥 int, double 같은 기본형을 쓰면 되는 거 아닌가? 싶겠지만, 래퍼 클래스가 필요한 이유가 몇 가지 있어요.

  1. 객체로 다뤄야 할 때 → 기본형 데이터는 객체가 아니라서, 객체를 요구하는 상황에서는 쓸 수 없어요.

    List<Integer> list = new ArrayList<>(); // ✅ Integer 객체만 저장 가능
    list.add(10); // 기본형 int를 넣었지만, 자동으로 Integer로 변환됨 (오토박싱)
  2. 기능이 필요할 때 → 기본형 데이터는 기능이 없지만, 래퍼 클래스는 다양한 메서드를 제공해요.

    int num = 100;
    String str = Integer.toString(num); // ✅ 숫자를 문자열로 변환 가능
  3. 기본형과 객체 간의 변환이 필요할 때 → 자동으로 변환되는 기능(오토박싱, 오토언박싱) 덕분에 편리해요.

    Integer num = 20; // 오토박싱: int → Integer
    int result = num + 5; // 오토언박싱: Integer → int

직접 래퍼 클래스를 만들어보자!

래퍼 클래스가 어떤 개념인지 더 쉽게 이해하려면 직접 만들어보는 게 좋아요.

class CustomInteger {
    private int value; // 기본형 데이터를 감싸는 변수

    // 생성자
    public CustomInteger(int value) {
        this.value = value;
    }

    // 값을 가져오는 메서드
    public int getValue() {
        return value;
    }

    // 값을 설정하는 메서드
    public void setValue(int value) {
        this.value = value;
    }

    // toString() 오버라이딩 → 출력할 때 값이 나오도록 설정
    @Override
    public String toString() {
        return String.valueOf(value);
    }
}
public class Main {
    public static void main(String[] args) {
        CustomInteger num = new CustomInteger(100);
        System.out.println(num); // 100

        num.setValue(200);
        System.out.println(num.getValue()); // 200
    }
}

이처럼 기본형 int 값을 감싸는 객체를 직접 만들 수도 있어요. 하지만 Java에서는 이런 작업을 대신해 주는 Integer, Double 같은 래퍼 클래스가 이미 존재하는 거죠!

🔄 오토박싱(Auto-Boxing) & 오토언박싱(Auto-Unboxing)

✔ 오토박싱: 기본형 → 래퍼 클래스 객체로 자동 변환

Integer num = 10; // int → Integer (자동 변환)

✔ 오토언박싱: 래퍼 클래스 → 기본형으로 자동 변환

int value = num; // Integer → int (자동 변환)

이 기능 덕분에 기본형과 객체를 자유롭게 오갈 수 있어요!

🚀 기본형과 래퍼 클래스의 성능 차이

⚡ 기본형이 더 빠르다!

래퍼 클래스는 객체이기 때문에 기본형보다 연산 속도가 느려요.

int a = 10;
int b = 20;
System.out.println(a + b); // 빠름!

Integer x = 10;
Integer y = 20;
System.out.println(x + y); // 내부적으로 변환 과정이 추가되어 느림!

그렇기 때문에 성능이 중요한 경우(반복문, 연산이 많은 코드 등)에는 기본형을 쓰는 것이 유리해요.

🎯 정리

✔ 기본형 데이터를 객체로 감싸는 것이 래퍼 클래스
✔ 기본형이 필요한 경우에는 기본형(int, double 등) 그대로 사용
✔ 객체처럼 다뤄야 하거나, 기능이 필요할 때는 래퍼 클래스(Integer, Double 등) 사용
오토박싱, 오토언박싱 덕분에 변환이 자동으로 이루어짐
성능이 중요한 경우 기본형을 우선 사용

profile
재미난 삶을 살다

0개의 댓글