본문 바로가기
Back-End/Java

[Java] 래퍼 클래스(wrapper class)

by 찐코딩 2021. 9. 17.

래퍼 클래스(wrapper class)

- wrap : 감싸다, 포장하다

- 기본 자료형을 클래스 타입으로 포장해 놓은 클래스

- 기본 자료형보다 객체로 저장하기 때문에 좀 더 다양한 기능을 제공하기 위해 사용함

- 기본 타입의 값을 내부에 두고 포장을 하기 때문에 포장(wrapper) 클래스라고도 함

- 기본 자료형 : byte, short, long, float, double, boolean, char, int (8가지)

- wrapper 클래스 : Byte, Short, Long, Float, Double, Boolean, Character, Integer

(전부 앞이 대문자!)

 

래퍼 클래스(wrapper class) 사용 이유

1. 매개변수로 객체가 요구될 때

2. 기본형 값이 아닌 객체로 저장해야 할 때

3. 객체간 비교가 필요할 때

4. 형 변환이 자유롭다는 특징이 있음 (★★★★★★★★★★★★★)

 

package wrapper;

public class Ex01 {

	public static void main(String[] args) {
		
		// 기본 자료형들은 단순한 연산을 하기 위한 용도로 사용
		int su1 = 100, su2 = 34;
		System.out.println("더하기 : " + (su1 + su2));
		System.out.println();
		
		
		// 클래스 자료형으로 바꾸기
		// 박싱(boxing) : 기본자료형 -> 클래스형
		// 언박싱(unboxing) : 클래스형 -> 기본자료형
		Integer in1 = new Integer(su1);		// 박싱
		Integer in2 = new Integer(su2);		// 박싱
		
		// 형변환이 자유로움
		System.out.println("float형으로 변경 : " + in1.floatValue());	// 언박싱
		System.out.println();
		
		// 숫자 -> 문자열
		// toString() 메소드 : 숫자 -> 문자열로 변경
		// String.valueOf(숫자) : 숫자 -> 문자열
		System.out.println("숫자 -> 문자열 >>> " + (in2.toString() + 34));
		System.out.println("숫자 -> 문자열 >>> " + (String.valueOf(su2) + 34));
		System.out.println();
		
		// 문자열 -> 숫자
		// perseInt() : 문자열 -> 숫자
		System.out.println
			("문자열 -> 숫자 : " + (Integer.parseInt(String.valueOf(su2)) + 44));
		
	}

}

결과

더하기 : 134

float형으로 변경 : 100.0

숫자 -> 문자열 >>> 3434
숫자 -> 문자열 >>> 3434

문자열 -> 숫자 : 78

 

오토 박싱(autoboxing)과 언박싱(unboxing)

- Integer는 객체이고, int는 4바이트 기본 자료형임

- 두개의 자료를 같이 연산할 때 자동으로 변환이 일어남

public class wrapper {
	
	public static void main(String[] args) {
		
		// 오토 박싱과 언박싱 예제
		//Integer num1 = new Integer(100);
		
		Integer num1 = 100;	// 버전9 이후부터는 이렇게 써도 된다.
		
		int num2 = 200;
		
		int sum = num1 + num2;		// num1가 언박싱=> num1.intValue()로 변환
		
		Integer num3 = num2;		// num2 오토박싱 => num2.valueOf(num2)로 변환
		
		System.out.println(sum);	// 300
		
		System.out.println(num3);	// 200
		
	}
}

결과

300
200

댓글