개발자 도전기
[JAVA] 포장 클래스 본문
포장 클래스란 기본 타입에 대응하는 참조 타입이다. 즉, 기본 타입의 값을 갖는 객체이다.
기본 타입 | 포장 클래스 |
byte | Byte |
char | Character |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
포장 객체는 포장하고 있는 기본 타입의 값을 변경할 수 없고, 단지 객체로 생성하는 데 목적이 있다.
이런 객체가 필요한 이유는 컬렉션 객체 때문이다. 컬랙션 객체는 기본 타입의 값은 저장할 수 없고, 객체만 저장할 수 있기 때문에 기본 타입의 값을 객체로 생성해준다.
박싱과 언박싱
기본 타입의 값을 포장 객체로 만드는 과정을 박싱(boxing)이라고 하고, 반대로 포장 객체에서 기본 타입의 값을 얻어내는 과정을 언박싱이라고 한다.
박싱은 포장 클래스 변수에 기본 타입 값이 대입될 때 발생한다. 반대로 언박싱은 기본 타입 변수에 포장 객체가 대입될 때 발생한다.
이때 주의해야 할 점은 기본 타입의 값이 형변환 된다고 해서 포장 클래스도 형변환이 되는 것은 아니다.
ㅇ상속 관계에 있는 타입들만 박싱이 가능하다.
public class C02WrapperClass {
public static void main(String[] args) {
int a = 3;
long b = a;
// Long d = a; 불가능
Number e = a;
Object f = a;
}
}
언박싱은 연산 과정에서도 발생한다. obj는 50과 연산되기 전에 언박싱된다.
Integer obj = 100; // 박싱
int value = obj; // 언박싱
int value = obj + 50; // 언박싱 후 연산
문자열을 기본 타입 값으로 변환
포장 클래스는 문자열을 기본 타입 값으로 변환할 때도 사용된다. 대부분의 포장 클래스에는 'parse + 기본타입' 명으로 되어있는 정적 메소드가 있다. 이 메소드는 문자열을 해당 기본 타입 값으로 변환한다.
포장 값 비교
포장 객체는 내부 값을 비교하기 위해 ==와 != 연산자를 사용할 수 없다. 참조 타입이기 때문에 두 객체의 참조값을 비교하기 때문이다. 대신 equals() 메소드로 내부 값을 비교할 수 있다.
'개발공부 > JAVA' 카테고리의 다른 글
[JAVA] Map 컬렉션 (0) | 2024.03.20 |
---|---|
[JAVA] 제네릭(Generic) (0) | 2024.03.19 |
[JAVA] Object 클래스 (0) | 2024.03.19 |
[JAVA] TreeSet (0) | 2024.03.19 |
[JAVA] Set 컬렉션 (0) | 2024.03.19 |