JAVA

221018 Wrapper클래스-Boxing, UnBoxing, AutoBoxing

주영재 2022. 10. 18. 17:14

★★★Wrapper클래스
자바는 기본 타입의 값을 갖는 객체를 생성할 수 있다.
기본형byte, short, int, long, float, double, char, boolean

이러한 객체를 포장 객체라고 하는데, 그 이유는 기본 타입의 값을 객체 내부에 두고 포장하기 때문 
객체형Byte, Short, Integer, Long, Float, Double, Character, Boolean

기본형을 객체에 담을 때 포장한다고 해서 'boxing한다' 라고 표현함
반대의 경우 'unboxing한다' 라고 표현.
매번 불편, 그래서 타입만으로 선언하면 자동형변환이 일어남. -AutoBoxing

실제 Wrapper클래스는 문자열->기본형으로 바꾸는데 많이 사용됨.
Integer.parseInt()나 Long.parseLong처럼.

 

 

Boxing, UnBoxing

package api.lang.wrapper;

public class Boxing {
	public static void main(String[] args) {
		
		int a =100;
		double b = 3.14;
		Long c = 200L;
		
		//기본형->객체형 포장하는 작업을 boxing 
		Integer val = new Integer(a);
		Double val2 = new Double(b);
		Long val3 = new Long(c);
		
		Object[] arr = {val, val2, val3};//객체형 변수를 Object배열에 저장
		
		//객체형->기본형 변경하는 작업 unboxing
		int a1=val.intValue();
		double b1=val2.doubleValue();
		Long c1 = val3.longValue();
		
		
		
		
	}

}

 

AutoBoxing

package api.lang.wrapper;

public class AutoBoxing {
	public static void main(String[] args) {
		
		//Autoboxing ->자동형변환
		int a=100;
		Integer val =a;
		a=val;
		
		Object[] arr = {1, 2, 3};//자동형변환된 것.
		
		int v1=Integer.parseInt("3");
		int v2=Integer.parseInt("34");
		double v3=Double.parseDouble("3.14");
		long v4=Long.parseLong("2342354564345");
		
		System.out.println(v4+v3+v2+v1);//2.34235456438514E12 
		
		
	}

}

중요한건 자동형변환이 된다는 것과, 형변환을 통해 Object배열등에 담을 수 있다는 것.

Integer.parseInt등을 사용하기 위해 형변환을 쓴다. 이런 메서드가 굉장히 자주 사용됨.