본문 바로가기
자바

박싱(Boxing)과 언박싱(Unboxing)

by 복제비 2021. 12. 9.

박싱(Boxing)과 언박싱(Unboxing)

 

Wrapper 클래스


Wrapper 클래스는 클래스를  8가지의 기본자료형(Boolean, Character, Byte, Short, Integer, Long, Float, Double)으로 감싸서 객체사용하는 클래스를 의미합니다.

 

박싱(Boxing)


8가지기본자료형(Boolean, Character, Byte, Short, Integer, Long, Float, Double)을 래퍼(Wrapper)클래스 객체로 변환하는 것을 의미합니다.

 

<예제>

int num1 = 100;
Integer num2 = num1; // 정수값을 Integer 클래스 객체로 포장(박싱)

Boolean bt1 = true;     // Boolean 값을 Boolean 클래스 객체로 포장(박싱)

 

언박싱(Unboxing)

 

래퍼(Wrapper )클래스 객체를 원래의 기본자료형(Boolean, Character, Byte, Short, Integer, Long, Float, Double)으로 변환하는 것을 의미합니다.

 

<예제>

Integer  num3 = new Integer(10); // 박싱

int  n = num3.intValue();   // 언박싱(Integer 클래스 객체를 정수값으로 변환)

 

오토박싱과 오토언박싱

 

오토 박싱과 오토 언박싱은 박싱 작업과 언박싱 작업을 자동적으로 해주는 것을 의미합니다.

 

<예제>

 

Character  c1 = 'C';   // Character c1 = new Character('C'); 오토박싱

Integer  num1 = 10; // 오토박싱

Integer  num2 = 20; // 오토박싱

int  sum = num1 + num2;  // 오토언박싱

int  i = num1;  //내부적으로 int  i = num1.intValue( ); 로 바뀌어서 동작함

// 명시적으로 기본자료형으로 변환하지 않아도 포장을 풀어서 동작하는 오토언박싱을 수행합니다.

 

래퍼클래스와 래퍼클래스간의  == 연산과  equals 연산 

 

Integer num3 = 20; //오토박싱
Integer num4 = 20; //오토박싱
Integer num5 = 20; //오토박싱
int n1 = 20;


// 기본자료형과 래퍼클래스간의 연산에서 == 연산과 equals 연산 모두 성립함
// 래퍼클래스와 래퍼클래스간의 연산에서 == 연산과 equals 연산 모두 성립함
System.out.println(num3 < num4);   // false
System.out.println(num3 == num5); // true
System.out.println(num3.equals(num5)); // true
System.out.println(num3 < n1);   // false
System.out.println(num3 == n1); // true
System.out.println(num3.equals(n1)); // true

 

박싱, 언박싱, 오토 박싱, 오토 언박싱래퍼클래스와 래퍼클래스간의  == 연산과  equals 연산을 위한 실습 프로그램은 다음과 같습니다.

 

 

 

 

 

'자바' 카테고리의 다른 글

자바 인터페이스의 상속  (0) 2021.12.12
자바 인터페이스  (0) 2021.12.11
Double 클래스  (0) 2021.12.08
Float 클래스  (0) 2021.12.08
Long 클래스  (0) 2021.12.05

댓글