래퍼 클래스
출처 : https://tcpschool.com/java/java_api_wrapper
래퍼 클래스(Wrapper Class)는
프로그램에 따라 기본 타입의 Data를 Object로 취급해야 하는 경우 사용한다.
만약 메서드 인자 값으로 요구되는 타입이 Object일 때,
기본 타입의 Data를 그대로 사용할 수 없기 때문에
Data 타입을 Object로 변환하여 작업을 진행해야 한다.
기본 타입 | 래퍼 클래스 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
즉, Wrapper Class는
위 표와 같은 8개의 기본 타입에 해당하는 Data를
Object로 포장해 주는 Class인 것이다.
박싱(Boxing)과 언박싱(UnBoxing)
Wrapper Class는 산술 연산을 위해 정의된 Class가 아니기 때문에
Instance에 저장된 값을 변경할 수없다.
다만, 값을 참조하기 위해 새로운 Instance 생성 및 생성된 Instance 값만을 참조할 수 있다.
Boxing | 기본 타입의 Data를 Wrapper Class의 Instance로 변환하는 과정 |
UnBoxing | Wrapper Class의 Instance에 저장된 값을 다시 기본 타입의 데이터로 꺼내는 과정 |
오토박싱(AutoBoxing)과 오토 언박싱(AutoUnBoxing)
Integer num = new Integer(100); // Boxing
int n = num.intValue(); // UnBoxing
System.out.println(n) // 결괏값 = 100
Character ch = 'X'; // Character ch = new Character('X') : AutoBoxing
char c = ch; // char c = ch.charValue(); : AutoUnBoxing
System.out.println(c); // 결괏값 = X
JDK 1.5부터 Boxing과 UnBoxing를 자바 컴파일러가 자동으로 처리를 해준다.
이를 오토 박싱과 오토 언박싱이라고 부른다.
equals()
Public class WrapperClass {
public static void main(String[] arg) {
Integer num1 = new Integer(100);
Integer num1 = new Integer(1000);
Integer num1 = new Integer(100);
System.out.println(num1 < num2); // 결괏값 = true
System.out.println(num1 == num2); // 결괏값 = false
System.out.println(num1.equals(num3)); // 결괏값 = true
}
}
WrapperClass는 Object이기 때문에 동등 연산자(==)를 사용하게 되면
두 Instance 값을 비교하는 것이 아니라, 두 Instance의 주솟값을 비교하게 된다.
따라서 Instance에 저장된 값의 동등 여부를 판단하기 위해서는 equals() 메서드를 사용해야 한다.
반응형
728x90
반응형
'프로그래밍 언어 > Java' 카테고리의 다른 글
[ Java ] DAO, VO, Service 활용한 리스트 불러오기 (58) | 2023.12.07 |
---|---|
[ Java ] Long과 long의 차이점 (60) | 2023.11.29 |
[ Java ] cannot be cast to java.math.bigdecimal (35) | 2023.11.24 |
[ Java ] HANA CLOUD DB 연동 (0) | 2023.01.30 |