⭐래퍼 클래스
wrapper class

 

기본 자료형(Primitive Type)을 객체로 다루기 위해서 사용하는 클래스

👍 기본 자료형을 객체로 감싼다(Boxing)고 생각하면 된다.

프로그래밍을 하다 보면
기본 타입 데이터를
객체로 표현해야 할 때가 있다.

byte       Byte
short      Short
int        Integer
long       Long
float      Float
double     Double
char       Character
boolean    Boolean


⭐박싱
Boxing
기본 > 래퍼
기본 데이터를 래퍼 클래스 객체로 변환하는 과정

⭐언박싱
Unboxing
래퍼 > 기본
래퍼 클래스 객체를 기본 타입 데이터로 변환하는 과정

이들은 많이 사용되기에 자바 5부터 간소화 기능이 마련돼있다.
자동박싱
Auto-boxing
자동언박싱
Auto-unboxing

래퍼클래스는 컬렉션 프레임워크에서 많이 사용된다.
컬렉션에는 객체만 저장할 수 있기 때문이다.
이에 래퍼클래스 사용이 강제된다.

주의사항
래퍼클래스는 객체이므로 기본타입보다 메모리 사용량이 많다.
가능하다면 기본 타입 사용이 권장된다.

또한 래퍼클래스를 활용할때 NumberFormatException이 발생할 수 있다.
예외처리코드를 작성해주는 것이 좋다.

 

예문)

박싱, 언박싱, 자동박싱, 자동언박싱 방법 연습

package _wrapper;
public class WrapperTest1 {
    public static void main(String[] args) {
        //박싱
        int num = 10;
        Integer wrapperedNum = Integer.valueOf(num);

        System.out.println(wrapperedNum); // 10
        System.out.println(wrapperedNum.toString()); // toString 자동호출

        //언박싱
        Integer wrapperdNum2 = Integer.valueOf(30);
        int num2 = wrapperdNum2.intValue();
        System.out.println(num2);

        //자동박싱 - 기본 데이터 값이 래퍼 클래스 객체에 바로 들어간다.
        Integer autoBoxed = 20;

        //자동언박싱
        int autoUnboxed = autoBoxed;

    }//main
}//class

 

예문2)

실수형 데이터에 박싱, 언박싱 연습

package _wrapper;
public class WrapperTest2 {
    public static void main(String[] args) {

        //double 데이터 타입을 래퍼 클래스로 변환
        double doubles = 1.234;
        Double doubleWrap = Double.valueOf(doubles);
        System.out.println("박싱:"+doubleWrap);
        System.out.println("박싱:"+doubleWrap.toString());

        Double doubleWrap2 = Double.valueOf(4.321);
        double doubles2 = doubleWrap2.doubleValue();
        System.out.println("언박싱:"+doubles2);
        System.out.println("===== ===== ");

        //자동 박싱 언박싱 예제코드
        Double doubleWrap3 = 3.333;
        System.out.println("자동박싱:"+doubleWrap3);

        double doubles3 = doubleWrap3;
        System.out.println("자동언박싱:"+doubles3);

    }//main
}//class

 

예문3)

정수형, 실수형, 논리형 등 여러 자료형에 박싱, 언박싱 연습

package _wrapper;
/**
 5.12
 래퍼 클래스의 활용
 String => 기본데이터

 래퍼클래스를 활용할때 NumberFormatException이 발생할 수 있다.
 예외처리코드를 작성해주는 것이 좋다.
 */
public class WrapperTest3 {

    public static void main(String[] args) {

        //String => 기본데이터
        String strNum = "123";
        String strDouble = "45.67";
        String strBool = "true";
        String badStr = "a123";

        int num = Integer.parseInt(strNum);
        System.out.println(num); //123

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

        boolean bool = Boolean.parseBoolean(strBool);
        System.out.println(bool); //true

        //a123 => int 변환
        try {
            int intNum = Integer.parseInt(badStr);
        } catch (NumberFormatException e) {
            System.out.println(badStr + "변수를 정수값으로 변경할 수 없습니다.");
        }
        //가능하다면 예외처리코드를 작성해주는 것이 좋다.

    }//main
}//class

 

예문4)

래퍼클래스를 활용해 String 클래스와 여러 자료형 사이 형변환을 해봤다.

package _wrapper;
/**
 5.12
 기본데이터 타입을 문자열로 바꿔본다.
 int double boolean => String
 */
public class WrapperTest4 {
    public static void main(String[] args) {

        //가장 쉬운 방법
        System.out.println(10 + "asdf");
        String str1 = 10 + "asdf";
        System.out.println(str1);

        //String 클래스의 valueOf()
        int value = 5000;
        String strValue = String.valueOf(value);
        System.out.println("int => String:"+strValue); //5000

        Float value2 = 1.234F; //접미사
        Long value3 = 1000L;

        String strValue2 = String.valueOf(value2);
        System.out.println("Float => String:"+strValue2); //1.234

        String strValue3 = String.valueOf(value3);
        System.out.println("Long => String:"+strValue3); //1000

    }//main
}//class

 

예문5)

컬렉션 프레임워크에서 래퍼클래스 사용해보기

package _wrapper;
import java.util.ArrayList;
/**
 5.12
 컬렉션 프레임워크에서
 래퍼 클래스 사용해보기

 래퍼클래스는 컬렉션 프레임워크에서 많이 사용된다.

 컬렉션에는 객체만 저장할 수 있다.
 래퍼클래스 사용이 강제된다.
 Integer Double Boolean
 */
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); //자동언박싱 (Integer > int)
        System.out.println("합:" + sum);

    }//main
}//class

+ Recent posts