▸JAVA/기본 문법

래퍼 클래스 (Wrapper Class)

코데방 2019. 12. 10.
728x90

[ 래퍼 클래스 (Wrapper Class) ]

  • 원시타입 변수를 객체화 시켜줌
  • 문자열을 원시타입 변수로 바꿔서 저장해주는 메소드 등 해당 타입에 대한 여러 메소드 제공
  • 원시타입 8개만큼 래퍼 클래스 8개가 존재
※ 원시(primitive) 타입 (8가지)

1. 논리타입 : boolean
2. 정수타입 : byte, short, int, long
3. 실수타입 : float, double
4. 문자타입 : char

원시타입은 데이터 저장의 기본 단위입니다. 그리고 원시타입이 아닌 모든 타입의 변수는 객체(인스턴스)의 주소를 가진 변수(참조변수)입니다. 따라서 저장된 데이터를 바꿀 수 있는 단위는 오직 원시타입뿐이며, 나머지는 데이터가 저장된 위치를 가리키는 메모리 주소를 담은 변수입니다.

 

 


 

 

원시타입을 필요에 따라 객체화 시켜주는 클래스가 래퍼 클래스입니다. 제네릭 사용이나 Object 타입의 데이터 전달이 필요할 때나, 원시타입 변수를 객체화시켜서 보관해야할 필요가 있다던지 할 때 사용합니다. 또한 문자열의 값을 원시타입 변수로 바꿔서 저장해주는 메소드 등 편리한 기능이 포함돼 있습니다.

 

 

 

[ 박싱 (Boxing) ]

  • 원시타입 변수 → 래퍼 클래스 (객체화)
  • 박싱을 위한 메소드는 static으로 선언되어 있어 인스턴스 생성 없이 사용 가능

래퍼 클래스 생성은 (int → Integer, char → Charater)를 제외하고 모두 클래스 이름이 원시타입과 같습니다. 클래스이기 때문에 앞은 대문자입니다. "클래스타입 변수 = 클래스타입.valueOf(변수)" 형태로 만들어 주면 됩니다. toString() 메소드가 래퍼 클래스에 오버라이딩 되어 있기 때문에 인스턴스를 바로 출력하면 변수 값이 출력됩니다.

package study.first;

public class Study {

	public static void main(String[] args) {

		boolean b = true;
		int i = 5;
		double d = 10.5;
		char c = 'A';		
		
		Boolean b1 = Boolean.valueOf(b);
		Integer i1 = Integer.valueOf(i);
		Double d1 = Double.valueOf(d);
		Character c1 = Character.valueOf(c);
		Float f1 = Float.valueOf("3.14");	// 문자열 사용해서 Float 타입 생성
		
		// 박싱
		System.out.println(b1);	// true
		System.out.println(i1);	// 5
		System.out.println(d1);	// 10.5
		System.out.println(c1);	// A				
		System.out.println(f1);	// 3.14
	}
}

 


 

[ 언박싱 (Unboxing) ]

  • 래퍼 클래스의 값을 원시타입 변수에 넣어줌
  • static이 아닌 생성된 인스턴스의 메소드로 사용

래퍼 클래스에 있는 값을 다시 원시타입으로 형변환해서 넣어주는 것을 언박싱이라고 합니다. 박싱과 달리 이미 생성된 인스턴스를 이용하므로 static이 아니라 클래스(인스턴스) 메소드로 선언되어 있습니다. "변수타입 변수 = 변수타입Value();" 형태로 사용하면 됩니다. 언박싱 메소드 앞글자는 모두 원시타입의 이름과 동일합니다.

package study.first;

public class Study {

	public static void main(String[] args) {

		boolean b = true;
		int i = 5;
		double d = 10.5;
		char c = 'A';		
		
		Boolean b1 = Boolean.valueOf(b);
		Integer i1 = Integer.valueOf(i);
		Double d1 = Double.valueOf(d);
		Character c1 = Character.valueOf(c);
		Float f1 = Float.valueOf("3.14");	// 문자열 사용해서 Float 타입 생성
		
		// 박싱
		System.out.println(b1);	// true
		System.out.println(i1);	// 5
		System.out.println(d1);	// 10.5
		System.out.println(c1);	// A				
		System.out.println(f1);	// 3.14
		
		// 언박싱
		boolean b2 = b1.booleanValue();
		int i2 = i1.intValue();
		double d2 = d1.doubleValue();
		char c2 = c1.charValue();
		float f2 = f1.floatValue();
		
		System.out.println(b2);	// true
		System.out.println(i2);	// 5
		System.out.println(d2);	// 10.5
		System.out.println(c2);	// A
		System.out.println(f2);	// 3.14
	}
}

 


 

[ 문자열을 원시타입 변수로 변환 ]

래퍼 클래스 안에 static으로 문자열을 원시타입 변수로 형변환해주는 메소드가 있습니다. 아래와 같이 "변수타입 변수 = parse타입("문자열")" 형태로 사용하면 됩니다. 

package study.first;

public class Study {

	public static void main(String[] args) {

		String a1 = "12345";
		String a2 = "54321";
		
		// Integer 클래스의 parseInt()메소드
		int b1 = Integer.parseInt(a1);
		int b2 = Integer.parseInt(a2);
		System.out.println(b1 + b2);	// 66666
	}
}

 

728x90

댓글

💲 추천 글