[Java] 포장 클래스(Wrapper Class)

2024. 3. 18. 16:40· IT/Java
목차
  1. 포장 클래스(Wrapper Class)
  2. Wrapper 값 비교
728x90

포장 클래스(Wrapper Class)

기본 타입의 데이터를 먼저 객체로 변환 후 작업을 수행해야 하는 상황이 생겼을 때 기본 타입에 해당하는 데이터를 객체로 포장해주는 클래스다. 포장 클래스는 각각의 타입에 해당하는 데이터를 인수로 전달받아, 해당 값을 가지는 객체로 만든다.

포장 객체는 포장하고 있는 기본 타입의 값을 변경할 수 없다.

Integer obj = 100; // Boxing
int value = obj; // UnBoxing

Boxing

  • 기본 타입의 값을 포장 객체로 만드는 과정
  • 포장 클래스 변수에 기본 타입 값이 대입될 때 발생

UnBoxing

  • 포장 객체에서 기본 타입의 값을 얻어내는 과정
  • 기본 타입 변수에 포장 객체가 대입될 때 발생

 

예제 코드 1

더보기
package ch12.sec00;

public class WrapperClass03 {
    public static void main(String[] args) {
        // 기본 ➡️ 참조
        int a = 5;
        Integer b = 5; // auto boxing
        Number c = a; // auto boxing
        Object d = a; // auto boxing

        Integer e = null; // ok
//        int f = null; // 값 자체가 없기 때문에 null 사용 불가능
    }
}

int a 가 Integer가 아닌 Number, Object에 대입이 되는 이유는 Object와 Number가 Integer의 상위라 가능하다

예제 코드 2

더보기
package ch12.sec06;

public class BoxingUnBoxingExample {
    public static void main(String[] args) {
        // Boxing
        Integer obj = 100;
        // 수동 unboxing, 재정의한 toString 호출
        System.out.println("obj = " + obj); // 100
        System.out.println("obj.toString() = " + obj.toString()); // 100
        // auto unboxing
        System.out.println("value: " + obj.intValue()); // 100
        // UnBoxing
        int value = obj;
        System.out.println("value = " + value); // 100
        // 연산 시 UnBoxing
        int result = obj + 100;
        System.out.println("result = " + result); // 200
    }
}

 

Wrapper 값 비교

==와 != 연산자는 번지를 비교하기 때문에 포장 객체에 어떤 값이 저장될지 모르는 상황이면 적합하지 않다.

포장 클래스의 equals() 메소드는 내부의 값을 비교하도록 재정의되어 있어, equals() 메소드로 내부 값을 비교할 수 있다.

예제 코드

더보기
package ch12.sec06;

public class ValueCompareExample {
    public static void main(String[] args) {
        // -128 ~ 127 초과값일 경우 다른 객체를 사용하여 번지가 다르다.
        Integer obj1 = 300;
        Integer obj2 = 300;
        System.out.println("==: " + (obj1 == obj2)); // false
        System.out.println(System.identityHashCode(obj1)); // 168423058
        System.out.println(System.identityHashCode(obj2)); // 821270929
        System.out.println("equals(): " + obj1.equals(obj2)); // true
        System.out.println();
        // -128 ~ 127 범위값일 경우 같은 객체를 사용하여 번지가 같다.
        Integer obj3 = 10;
        Integer obj4 = 10;
        System.out.println("==: " + (obj3 == obj4)); // true
        System.out.println(System.identityHashCode(obj3)); // 1919334762
        System.out.println(System.identityHashCode(obj4)); // 1919334762
        System.out.println("equals(): " + obj3.equals(obj4)); // true
    }
}

 

 

 

728x90
저작자표시 (새창열림)

'IT > Java' 카테고리의 다른 글

[Java] 제네릭 Generic  (0) 2024.03.20
[Java] 정규 표현식(Regular Expression)  (0) 2024.03.18
[Java] java.base 모듈  (1) 2024.03.15
[Java] 메소드 참조(method reference)  (0) 2024.03.15
[Java] 람다 작성법  (0) 2024.03.14
  1. 포장 클래스(Wrapper Class)
  2. Wrapper 값 비교
'IT/Java' 카테고리의 다른 글
  • [Java] 제네릭 Generic
  • [Java] 정규 표현식(Regular Expression)
  • [Java] java.base 모듈
  • [Java] 메소드 참조(method reference)
Huitopia
Huitopia
Huitopia
summary
Huitopia
  • 분류 전체보기 (170)
    • IT (156)
      • Java (72)
      • JavaScript (11)
      • TypeScript (4)
      • Node.js (7)
      • Front (10)
      • Database (2)
      • Algorithm (28)
      • etc. (22)
    • Bootcamp (14)
      • WIL (14)

블로그 메뉴

  • GitHub
  • TIL

공지사항

인기 글

태그

  • Spring
  • wil
  • 모던자바스크립트
  • css
  • 자동타입변환
  • programmers
  • 클래스
  • Interface
  • node.js
  • CodingTest
  • 연산자
  • Java
  • array
  • 스파르타코딩클럽
  • HTML
  • 인터페이스
  • WEB
  • 자바
  • 상속
  • 회고록
  • javascript
  • jQuery
  • 웹개발종합반
  • python
  • 타입변환
  • Method
  • 강제타입변환
  • 항해99
  • TypeScript
  • CLASS

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
Huitopia
[Java] 포장 클래스(Wrapper Class)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.