ToBe끝판왕

[ JAVA ] 래퍼 클래스 ( Wrapper Class ) 본문

■ 프로그래밍 SKILLS/JAVA

[ JAVA ] 래퍼 클래스 ( Wrapper Class )

업그레이드중 2024. 8. 20. 02:03
반응형



 


 

 

래퍼 클래스 ( Wrapper Class )

 

 

•  기본 데이터 타입( Primitive Data Type )을 객체( Object )로 감싸기 위해 제공되는 클래스

•  기본형을 객체로 감싸 편리하게 사용 가능하므로 아주 유용하다.

 

 

※  기본형의 한계

•  객체가 아니므로 스스로 메서드를 제공할 수 없다.

•  Null값 ( 데이터가 없음 )을 표현할 수 없다.

 

•  래퍼 클래스( Wrapper Class ) 의 특징

-  불변 객체이다.

-  equals() 메서드를 활용하여 비교해야 한다.

 

 

•  래퍼 클래스의 사용법

-  기본형을 래퍼클래스( Wrapper Class) 로 변경하는 것을 박싱( Boxing )이라고 한다.

-  new Integer(20) 보다는 valueOf() 메서드를 활용해야 한다.

-  래퍼클래스( Wrapper Class ) 에 있는 기본형 값을 다시 꺼내는 메서드이다.

 

package lang.string.builder;

public class WrapperClassMain {

    public static void main(String[] args) {

        Integer newInteger = new Integer(20);   // 미래 삭제 예정이므롸, valueOf() 사용
        Integer integerObj = Integer.valueOf(20);   // 자주 사용하는 숫자값 재사용, 불변

        Long longObj = Long.valueOf(100);
        Double doubleObj = Double.valueOf(10.8);

        System.out.println("newInteger = " + newInteger);
        System.out.println("integerObj = " + integerObj);
        System.out.println("longObj = " + longObj);

        System.out.println("내부 값 읽기");
        int intValue = integerObj.intValue();
        System.out.println("intValue = " + intValue);

        Long longValue = longObj.longValue();
        System.out.println("longValue = " + longValue);

        System.out.println("비교");
        System.out.println("==: " + (newInteger == integerObj));
        System.out.println("equals: " + newInteger.equals(integerObj));

        
    }
}
// 실행 결과

newInteger = 20
integerObj = 20
longObj = 100

내부 값 읽기
intValue = 20
longValue = 100

비교
==: false
equals: true

 

 

 

•  박싱( Boxing )  / 언박싱( Unboxing ) / 오토박싱( Auto Boxing )

-  박싱  :  valueOf( )-  언박싱  :  xxxValue( ) ( 예 : intValue() , doubleValue() )-  오토박싱  :  컴파일러가 개발자 대신 valueOf( ) 나 xxxValue( ) 등 코드를 추가해주는 기능

package lang.string.builder;

public class WrapperClassMain {

    public static void main(String[] args) {

        // 기본형 -> 래퍼 클래스
        int value = 7;
        Integer boxedValue = Integer.valueOf(value);

        // 래퍼 클래스 --> 기본형
        int unboxedValue = boxedValue.intValue();

        System.out.println("boxedValue = " + boxedValue);
        System.out.println("unboxedValue = " + unboxedValue);

        // 오토박싱 , 오토 언박싱
        int value2 = 8;
        Integer boxedValue2 = value2;
        int unboxedValue2 = boxedValue2;

        System.out.println("boxedValue2 = " + boxedValue2);
        System.out.println("unboxedValue2 = " + unboxedValue2);



    }
}
// 실행 결과

boxedValue = 7
unboxedValue = 7


boxedValue2 = 8
unboxedValue2 = 8

 

 

 

•  래퍼 클래스 주요 메서드

-  valueOf( )  :  래퍼타입 반환 ( 숫자열, 문자 모두 지원 )

-  parseInt( )  :  문자열을 기본형으로 변환

-  compareTo( )  :  내값과 인수값 비교 ( 내 값이 크면 1, 같으면 0, 작으면 -1을 반환 )

package lang.string.builder;

public class WrapperClassMain {

    public static void main(String[] args) {

        Integer i1 = Integer.valueOf(10);   // 숫자 래퍼 객체 반환
        Integer i2 = Integer.valueOf("20"); // 문자열 래퍼 객체 반환
        int intValue = Integer.parseInt("30");  // 문자열 전용으로 기본형 반환

        // 비교
        int compareResult = i1.compareTo(20);
        System.out.println("compareResult = " + compareResult);

        // 산술 연산
        System.out.println("sum: " + Integer.sum(10,20));
        System.out.println("sum: " + Integer.min(10,20));
        System.out.println("sum: " + Integer.max(10,20));


    }
}
// 실행 결과

compareResult = -1
sum: 30
sum: 10
sum: 20

 

 

 

 

•  래퍼 클래스 추가 예시

package lang.string.builder;

public class WrapperClassMain {

    public static void main(String[] args) {

        // parseInt() 메서드
        String str1 = "10";
        String str2 = "20";

        int num1 = Integer.parseInt(str1);
        int num2 = Integer.parseInt(str2);
        int sum = num1 + num2;
        System.out.println("parseInt() sum = " + sum);


        // 박싱 & 언박싱
        String str3 = "100";

        // String --> Integer
        Integer integer1 = Integer.valueOf(str3);
        System.out.println("integer1 = " + integer1);

        // Integer --> int
        int intValue = integer1.intValue();
        System.out.println("intValue = " + intValue);

        // int --> Integer
        Integer integer2 = Integer.valueOf(intValue);
        System.out.println("integer2 = " + integer2);

    }
}
// 실행 결과

parseInt() sum = 30
integer1 = 100
intValue = 100
integer2 = 100

 

 

 

 

※ 해당 내용은 인프런 김영한 강사님의  "실전 자바 중급1" 인강의 참고자료와 예시들을 참고하였습니다

 

 

 

 

반응형

'■ 프로그래밍 SKILLS > JAVA' 카테고리의 다른 글

[ JAVA ] 예외 처리 (1)  (0) 2024.08.21
[ JAVA ] 열거형 ( ENUM )  (0) 2024.08.20
[ JAVA ] String 클래스 (2)  (0) 2024.08.19
[ JAVA ] String 클래스 (1)  (0) 2024.08.13
[ JAVA ] 불변 객체 ( 기본형과 참조형 )  (0) 2024.08.12
Comments