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));
}
}
'JAVA' 카테고리의 다른 글
[JAVA] 자료구조와 알고리즘 (0) | 2023.07.31 |
---|---|
URL Encodeing / Decoding 정리 (0) | 2023.07.27 |
[java] 예외처리 Exception / Finally / Throw (0) | 2022.12.06 |
JAVA - 객체 지향 복습 (7장) : 추상클래스와 인터페이스 (0) | 2022.12.02 |
JAVA - 객체 지향 복습 (0) | 2022.11.23 |