Wrapper 클래스


기본타입과 박싱된 기본타입
기본타입 : int, double, boolean...
박싱된 기본타입 : Integer, Double, Boolean...

차이점 : 기본타입은 값만 가지고 있으나, 
              박싱된 타입의 값 + 식별성(identity)을 가짐

박싱된 기본타입의 두 객체는 값이 같아도 서로 다르다고 식별될 수 있다.
박싱된 기본타입은 null값을 가질 수 있다.
기본타입이 박싱된 기본타입보다 시간과 메모리 사용면에서 더 효율적임.

박싱된 타입을 써야 할 때
컬렉션의 원소, 키, 값으로 쓸때.
컬렉션은 기본타입을 담을 수 없으므로 박싱된 기본타입을 써야 한다.

Wrapper 클래스의 값의 범위
boolean      => true , false
char            => \u0000 ~ \u007f
byte,short,int  => -128 ~ 127

 

public class ValueCompareExample {
 public static void main(String[] args) {
   System.out.println("Wrapper 클래스 Integer의 값이");
   System.out.println("[-128~127 초과값일 경우]");
		
   Integer obj1 = 300; //wrapper 클래스 Integer의 값 = 300
   Integer obj2 = 300;
		
   System.out.println("==결과: " + (obj1 == obj2)); // false
   System.out.println("언박싱한==결과: " + (obj1.intValue() == obj2.intValue()));
// 그냥 참조변수 비교 결과 = false (객체비교여서..false)
// 언박싱해서 비교한 결과 = true 
		
   System.out.println("equals 결과 = "+ obj1.equals(obj2));
// 내용비교여서 true
		
   System.out.println("-----------------------------------------");
   System.out.println("Wrapper 클래스 Integer의 값이");
   System.out.println("[-128~127 범위값일 경우]");
   Integer obj3 = 10;
   Integer obj4 = 10;
		
   System.out.println("==결과 : " + (obj3 == obj4)); // true
   System.out.println("언박싱한==결과: " + (obj3.intValue() == obj4.intValue()));
   System.out.println("equals 결과 = "+ obj3.equals(obj4));
	
	}

}

 

+ Recent posts