JAVA 유용한 클래스

(JAVA)래퍼 클래스(Wrapper Class) - 10

mynote6676 2025. 5. 12. 13:25

래퍼 클래스(Wrapper Class) - 10

프로그래밍을 하다 보면 기본 타입의 데이터를 객체로 표현해야 하는 경우가 종종 있습니다. 이럴 때에 기본 자료타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 합니다.

1. 래퍼 클래스란?

프로그래밍에서 기본 데이터 타입(primitive type)을 객체로 다룰 필요가 있을 때 사용하는 클래스입니다. Java에서는 기본 데이터 타입(int, double, boolean 등)을 객체로 변환하거나, 객체에서 기본 데이터 타입으로 변환하기 위해 래퍼 클래스를 제공합니다.

래퍼 클래스의 필요성

  • 컬렉션 프레임워크 (예: ArrayList, HashMap)에서는 객체만 저장 가능. 기본 타입은 저장 불가.
  • 문자열(String)과 기본 타입 간의 변환 필요.

 

2. 코드 실습

더보기
package wrapper;

public class WrapperTest1 {

    public static void main(String[] args) {

        //박싱(Boxing)
        //기본 데이터 타입을 래퍼클래스 객체로 변환하는 과정
        int num = 10;
        Integer wrapperedNum = Integer.valueOf(num); // 박싱하다
        System.out.println(wrapperedNum);

        // 언박싱(Unboxing)
        // 래퍼 클래스 객체를 기본 타입 데이터로 변환하는 과정.
        Integer wrappedNum2 = Integer. valueOf(30);
        int num2 = wrappedNum2.intValue();
        System.out.println("num :" + num2);

        //편의성을 제공 -java 5부터 도입됨
        //자동 박싱(Auto-boxing), 자동 언박싱(Auto-unboxing)

        Integer autoBoxed = 20; // 자동 박싱 (int(값)----> Integer(..))
        int autoUnboxed = autoBoxed;  // 자동 언박싱(Integer(값)--> int)




    }// end of main

} // end of class

 

 

package wrapper;

public class WrapperTest2 {

    public static void main(String[] args) {
        //도전 문제
        //double 데이터 타입을 래퍼 클래스로 변환
        double num1 = 10.0;
        Double wapperNum1 = Double.valueOf(num1); // num1을 박싱한것
        System.out.println(wapperNum1); //toString이 자동적으로 들어감 그래서 주소값이 출력되지 않고 값이 나옴
        boolean flag = true;
        Boolean wapperFlag = Boolean.valueOf(flag);
        System.out.println(wapperFlag);
        

        //박싱, 언박싱 예제코드를 작성
        Double wapperNum2 = Double.valueOf(10.0);
        double num2 = wapperNum2.doubleValue(); // 박싱되어 있던것을 기본데이터로 변환해서 언박싱함
        System.out.println(num2);
        Boolean wapperFlag2 = Boolean.valueOf(false);
        boolean flag2 = wapperFlag2.booleanValue();
        System.out.println(flag2);
        
        //자동 박싱과, 자동 언박싱 코드 작성
        Double autoNum3 = 10.0; // 자동 박싱
        double num3 = autoNum3; // 자동 언박싱
        System.out.println(num3);
        Boolean autoFlag = true;
        boolean flags = autoFlag;
        System.out.println(flags);



    } //end of main

} // end of class

3. 래퍼 클래스의 주요 활용

더보기

3.1 문자열 ---> 기본 타입

-Integer.parseInt(String) : 문자열을 int로 변환.

-Double.parseDouble(String) : 문자열을  double로 변환.

-Boolean.parseBoolean(String) : 문자열을 boolean으로 변환.

package wrapper;

public class WrapperTest3 {

    public static void main(String[] args) {
        // 래퍼 클래스의 활용 **
        //래퍼 클래스의 활욜 String ---> 기본 데이터 타입(int, boolean)

        String strNum = "123";
        String strDouble = "45.67";
        String strBool = "true";
        String badStr = "a123";


        // 래퍼 클래스를 활용해서 형 변환 처리
        int num = Integer.parseInt(strNum);
        System.out.println(num);

        double dNum = Double.parseDouble(strDouble);
        System.out.println(dNum);

        boolean boolNum = Boolean.parseBoolean(strBool);
        System.out.println(boolNum);

        // 주의 사항
        // a123 -> int 변환
        try {
            int intNum = Integer.parseInt(badStr);
        } catch (NumberFormatException e) {
            System.out.println(badStr + "을 정수값으로 변경할 수 없습니다.");
        }

        // 가능한 String ----> 기본 데이터 타입으로 변환을 할 때  예외 처리 코드를
        //작성해 주는것이 좋다.


    } // end of class

}

 

기본 타입 ---> 문자열

-String.valueOf(기본타입) : 기본 타입을 문자열로 변환.

package wrapper;

public class WrapperTest4 {

    public static void main(String[] args) {
        //기본 타입(int, double, boolean) ---->문자열로 변환하는 방법
        // 1. 가장 쉬운 방법
        System.out.println(10 + "");
        String str1 = 15.5 + "";

        // 2. String 클래스의 valueOf() 활용히는 방법
        int value = 5000;
        String strValue = String.valueOf(value); // value(int) --> String변환
        System.out.println("정수를 문자열로 : " + strValue + "원");

        Float value2 = 500.123F; // 접미사
        Long value3 = 1000L; // 접미사
      
        // 정수값 기본연산 --> int
        // 실수의 기본 연산 --> double
        String strValue2 = String.valueOf(value2);
        System.out.println("strValue2 : " + strValue2);
        

    } // end of main
}

 

3.2 컬렉션 프레임워크에서 사용

ArrayList와 같은 컬렉션은 객체만 저장 가능, 래퍼 클래스를 사용해 기본 타입을 객체로 변환.

package wrapper;

import java.util.ArrayList;

public class WrapperTest5 {

    public static void main(String[] args) {
        //컬렉션 프레임워크에서의 사용
        //컬렉션은 객체만 저장 가능, 즉 래퍼 클래스를 사용해 처리해야함
        // 정수 값(래퍼 클래스)
        ArrayList<Integer> numbers = new ArrayList<>();

        numbers.add(Integer.valueOf(10));
        numbers.add(20); // 자동 박싱(int -> Integer)

        int sum = numbers.get(0) + numbers.get(1); // 자동 언박싱이 되서 int 에 들어감
        System.out.println("합계 : " + sum);
        

    } // end of main
}

4. 주의사항

더보기

4.1 예외 처리 

문자열을 기본 타입으로 변환할때, 잘못된 형식의 문자열은 NumberForamatException을 발생시킵니다.

항상 예외 처리를 해야 합니다.

try {
    int num = Integer.parseInt("123abc"); // 예외 발생
} catch (NumberFormatException e) {
    System.out.println("숫자 형식이 아닙니다.");
}

 

4.2 성능 고려

-래퍼 클래스는 객체이므로 기본 타입보다 메모리 사용량이 많고 처리 속도가 느릴 수 있음

-가능하면 기본 타입 사용 권장, 객체가 필요한 경우에만 래퍼 클래스 사용.

5. 정리

더보기

-래퍼 클래스는 기본 타입을 객체로 다룰 때 사용.

-박싱/언박싱, 자동 박싱/언박싱 이해 필수.

- 문지열과 기본 타입 간 변환. 컬렉션 프레임워크에서 자주 사용.

-예외 처리와 성능 고려 중요.