[Java] 박싱, 언박싱

박철현·2023년 3월 2일

Java

목록 보기
1/13

Java에서는 박싱과 언박싱 그리고 자동으로 시행해주는 오토 박싱, 오토 언박싱이 존재한다.

관련 내용은 아래와 같다.

  1. 박싱
  • 개념 : 기본형 자료형을 객체화 시켜주는 것.

  • 사용법 : Wrapper 클래스를 활용하여 객체화 시킴

    int a = 10;
    Integer Obja = new Integer(a);  // 박싱
    
    System.out.println(a);  // 10 (정수)
    System.out.println(Obja); // 10 (객체 10)
  1. 언박싱
  • 개념 : Wrapper 클래스를 활용하여 박싱한 데이터를 기본형 자료형으로 풀어주는것
  • 사용법 : 관련 메소드를 활용
int a = 10;
		Integer Obja = new Integer(10);  // 박싱
		System.out.println(a);  // 10 (정수)
		System.out.println(Obja); // 10 (객체 10)
		int b = Obja.intValue();  // 10 (객체 → 정수)
		System.out.println(b);   // 10
  1. 오토 박싱 & 오토 언박싱
  • 개념 : 자동으로 박싱 / 언박싱을 해주는 것

  • 사용법 : 자동으로 변환

    int a = 10;
    Integer Obja = a; // 오토 언박싱으로 new Integer(a) 이거 대신 가능
    
    System.out.println(a);  // 10 (정수)
    System.out.println(Obja); // 10 (객체 10) 오토 언박싱
    
    int b = Obja;  // 오토 박싱으로 Obja.intValue() 이거 대신 사용
    System.out.println(b+1);   // 11, 정수형으로 변환되어 기본형 자료형 연산 가능
  1. 왜 사용하는가?
  • 코드의 간결화를 위함

  • 메소드 또는 클래스를 생성하고 매개변수로 다양한 자료형을 받는 코드가 있을 시, 상위 객체로 받는 메소드 또는 생성자를 구현하면 코드가 훨씬 간결해짐

  • 예시) int형을 받는 메소드, double형 받는 메소드, boolean형을 받는 메소드 → Wrapper 클래스로 객체화 시키면 매개변수로 Object형으로 받는 메소드 하나만 구현이 가능

    
    void 예시1(int a){
    	System.out.println("예시입니다.");
    }
       
    void 예시2(String s){
    	System.out.println("예시입니다.");
     }
    
    void 예시3(Object o) {
       System.out.println("예시입니다.");
     }
  • 매개변수로 최상위 객체인 Object를 받으면, 객체화 된 기본 자료형(박싱)을 받을 수 있는 하나의 메소드로 구현 가능

    • 위에서 int를 Integer로 박싱을 하면 예시3 메서드 하나면 예시 1, 2 필요 없어짐
profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글