본문 바로가기

JAVA

JAVA API 2: Warpper 클래스

Wrapper 클래스 : 기본 자료형 변수를 객체로 변환

 

  • 기본 자료형을 감싸 객체로 만든다는 의미의 Wrapper 클래스
기본자료형 Wrapper클래스[객체]
boolean Boolean
char Char
byte Byte
short  Short
int Int
long  Long
float Float
double Double

 

* 왜 사용하는가?

  1.  객체(Object) 로 활용 : null 값을 넣거나 다형성 적용, Object 클래스 상속해 (toString() 같은) 메서드 사용 가능
  2. 객체만 사용하는 클래스, 인터페이스 사용 : Collection Framework 데이터 구조는 객체만 저장(Gemerics 타입에 객체만 사용 가능)
  3. 멀티쓰레딩 동기화 지원 시 객체 필요
래퍼 클래스는 기본형을 객체로 변환한다.

메소드에 객체(Object)로 전달된 인수를 수정하려 하거나,
기본 타입이 아닌 객체만 저장하는 ArrayList 등과 같은 Collection 프레임 워크에서 Wrapper Class를 사용(자동 박싱, 언박싱 일어남)하는 등

객체가 필요할 때 Wrapper 클래스가 필요하게 된다.

 

  • (Boxing) 기본자료형 → Wrapper 클래스 자료형
int num = 10;
int num2 = 20;
Integer i1 = new Integer(num); // 박싱!
Integer i2 = new Integer(num2);


1. System.out.println(i1); // 출력 시 주소값 아님: Integer 안의 toString은 오버라이딩 되어 있음

2. 이제 String 클래스 사용 가능!
	System.out.println(i1.equals(i2)); // 출력 값은 false

3. .compareTo 메서드 : 두 값을 비교해서 앞쪽이 크면 1 반환, 뒤쪽이 크면 -1 반환, 같으면 0 반환
	System.out.println(i1.compareTo(i2));
  • (AutoBoxing) 객체 생성 하지 않고 바로 대입
int num = 10;
Integer i1 = num;

 

+ 문자열을 Integer 타입으로 변환하고 싶다면?
객체 생성 필요 "123" -> 123 (숫자로 변환)
예) Integer i = new Integer("123");

 

  • (UnBoxing) &  (Auto unBoxing) Wrapper 클래스 자료형  기본자료형
int num1 = 10;
Integer i1 = num1;


1. (UnBoxing) oooValue() 메소드 이용
int num2 = i1.intValue();

2. (Auto unboxing)
int num3 = i1;

 

  • String의 경우
String str1 = "10";
String str2 = "15.5";
		
        
1. String -> 기본자료형 : 각Wrapper클래스타입,.parseooo() 사용
int i = Integer.parseInt(str1);
double d = Double.parseDouble(str2);
		
2. 기본자료형 -> String : String.valueOf() 사용
String strI = String.valueOf(i);
String strD = String.valueOf(d);
System.out.println(strI + strD); // 1015.5 출력