프로그래밍/java

[자바 / Java] Wrapper 클래스(Auto Boxing과 Auto UnBoxing)

pupu91 2022. 9. 3. 16:39
반응형

 

 

Wrapper 클래스

: 8가지에 해당하는 기본 타입의 데이터를 객체화 할 수 있도록 하는 클래스

 

Primitive Data Type Wrapper Class
 boolean Boolean
byte Byte
char Character
short Short
int Integer
long Long
float Float
double Double

 

 


 

Boxing

: 기본 타입을 레퍼클래스의 객체로 객체화 하는 것

 

 

UnBoxing

: 래퍼클래스 타입의 객체를 기본 타입으로 변경하는 것

int intValue = 20;
박싱 - 생성자 이용
Integer boxingNumber1 = new Integer(intValue);
=>int값 기본자료형을 Integer라는 생성자 쪽에다가 인자로 전달하면 Integer타입의 객체가 됨
  (java 9버전부터는 쓰지 않음)

박싱 - static 메소드 이용
Integer boxingNumber2 = Integer.valueOf(intValue);
=> Intger클래스가 가지고 있는 valueOf라는 Static 메소드를 이용해서 20이라는 
   기본 자료형을 전달하면 Integer타입의 객체가 됨.
   
언박싱 - IntValue() 이용
int unBoxingNumber1 = boxingNumber1.intValue();	
=> 박싱된 객체를 intVaue()를 사용해 int타입으로 바꿈

 

 

 


 

Auto Boxing과 Auto UnBoxing

: JDK 1.5부터는 박싱과 언박싱을 자바 컴파일러가 이를 자동으로 처리해 줌

  이런 자동화 된 박싱과 언박싱을 오토 박싱, 오토 언박싱이라고 함.

 

오토 박싱
Integer boxingNumber3 = intValue;

오토 언박싱
int unBoxingNumber2 = boxingNumber3;

 

반응형

 

Wrapper 클래스 값 비교

: 기본 타입과 래퍼클래스 타입은 == 연산으로 비교 가능

  생성자를 이용해 생성한 객체의 경우 주소값으로 비교하기 때문에 == 로 비교하지 못함(equals사용)

  오토 방식을 이용해서 생성한 값은  == 로 비교 가능

 

int inum = 20;
Integer integerNum1 = new Integer(20);
Integer integerNum3 = 20;
Integer integerNum4 = 20;

기본 타입과 래퍼클래스 타입 비교
System.out.println("int와 Integer 비교 : " + (inum == integerNum3));

오토박싱 값 비교
System.out.println("integer와 integer 비교 : " + (integerNum3 == integerNum4));

생성자 이용한 경우 equals로 값 비교
System.out.println("equals() : " + (integerNum1.equals(integerNum3)));

 

 

  

parsing

: 문자열(String)  값을 기본 자료형 값으로 변경하는 것

  Character는 parsing 기능을 제공하지 않음

 

byte b = Byte.parseByte("1");
short s = Short.parseShort("2");
int i = Integer.parseInt("4");
long l = Long.parseLong("8");
float f = Float.parseFloat("4.0");
double d = Double.parseDouble("8.0");
boolean bl = Boolean.parseBoolean("true");

Character는 parsing 기능을 제공하지 않기 때문에 아래와 같이 사용
char c = "abc".charAt(0);

 

 

valueOf() 

: 기본자료형 값을 Wrapper 클래스 타입으로 변환시키는 메소드

toString() 

: 필드 값을 문자열로 반환하는 메소드

 

valueOf()와 toString() 사용하여 문자열로 변환
String b = Byte.valueOf((byte)1).toString();
=> 1이라는 값을 가진 기본자료형 byte를
   레퍼클래스 Byte타입으로 변화시키고, toString메소드로 String으로 만들었다.

String 클래스의 valueOf 메소드로 변환
String str = String.valueOf(10);


문자열 합치기를 이용해 String으로 변환
String str2 = 123 + "";
반응형