반응형
java.lang 패키지
- java.lang 패키지는 자바에서 가장 기본적인 동작을 수행하는 클래스들의 집합이다. 따라서 자바에서는 java.lang 패키지의 클래스들은 import 문을 사용하지 않아도 클래스 이름만으로 바로 사용할 수 있다.
Wrapper 클래스
래퍼 클래스(Wrapper class)
- 프로그램에 따라 기본 타입의 데이터를 객체로 취급해야 하는 경우가 있을 때, 기본 타입의 데이터를 먼저 객체로 변환한 후 작업을 수행해야 한다. 이렇게 8개의 기본 타입에 해당하는 데이터를 객체로 포장해 주는 클래스를 래퍼 클래스(Wrapper class)라고 한다.
- 래퍼 클래스는 각각의 타입에 해당하는 데이터를 인수로 전달받아, 해당 값을 가지는 객체로 만들어 준다.
- 래퍼 클래스는 모두 java.lang 패키지에 포함되어 제공된다.
- 자바의 기본 타입에 대응하여 제공하고 있는 래퍼 클래스는 다음과 같다. 참고로 래퍼 클래스 중에서 Integer 클래스와 Character 클래스만이 자신의 기본 타입과 이름이 다르다.
박싱(Boxing)과 언박싱(UnBoxing)
- 래퍼 클래스(Wrapper class)는 산술 연산을 위해 정의된 클래스가 아니므로, 인스턴스에 저장된 값을 변경할 수 없다. 그래서 값을 참조하기 위해 새로운 인스턴스를 생성하고, 생성된 인스턴스의 값만을 참조할 수 있다.
- 아래와 같이 기본 타입의 데이터를 래퍼 클래스의 인스턴스로 변환하는 과정을 박싱(Boxing)이라고 하고, 래퍼 클래스의 인스턴스에 저장된 값을 다시 기본 타입의 데이터로 꺼내는 과정을 언박싱(UnBoxing)이라고 한다.
오토 박싱(AutoBoxing)과 오토 언박싱(AutoUnBoxing)
- JDK 1.5부터는 박싱과 언박싱이 필요한 상황에서 자바 컴파일러가 이를 자동으로 처리해 주는데, 이런 자동화된 박싱과 언박싱을 오토 박싱(AutoBoxing)과 오토 언박싱(AutoUnBoxing)이라고 부른다.
- 오토 박싱을 이용하면 new 키워드를 사용하지 않고도 자동으로 인스턴스를 생성할 수 있고, 해당 래퍼클래스 메소드를 사용하지 않고도 오토 언박싱을 이용하여 인스턴스에 저장된 값을 바로 참조할 수 있다.
Integer num = new Integer(17); // 박싱 - Interger 클래스 선언
int n = num.intValue(); // 언박싱 - Interger 클래스의 intValue() 메소드
System.out.println(n); // 17
Character ch = 'X'; // Character ch = new Character('X'); : 오토박싱
char c = ch; // char c = ch.charValue(); : 오토언박싱
System.out.println(c); // X
- 오토 박싱과 오토 언박싱을 통해 기본 타입과 래퍼 클래스 간의 다양한 연산도 가능하다. 래퍼 클래스의 비교 연산도 오토언박싱을 통해 가능해지지만, 인스턴스에 저장된 값의 동등 여부 판단은 비교 연산자인 동등 연산자(==)를 사용해서는 안 되며, equals() 메소드를 사용해야만 한다.
- 래퍼 클래스도 객체이므로 동등 연산자(==)를 사용하게 되면, 두 인스턴스의 값을 비교하는 것이 아니라 두 인스턴스의 주소값을 비교하게 된다. 따라서 서로 다른 두 인스턴스를 동등 연산자(==)로 비교하게 되면, 언제나 false 값을 반환되게 되므로, 인스턴스에 저장된 값의 동등 여부를 정확히 판단하려면 equals() 메소드를 사용해야만 한다.
public class Wrapper03 {
public static void main(String[] args) {
Integer num1 = new Integer(10);
Integer num2 = new Integer(20);
Integer num3 = new Integer(10);
System.out.println(num1 < num2); // true
System.out.println(num1 == num3); // false
System.out.println(num1.equals(num3)); // true
}
}
Reference
반응형
'Language > Java' 카테고리의 다른 글
[Java] 자바 API 클래스 - Arrays 클래스 (0) | 2024.04.13 |
---|---|
[Java] 자바 API 클래스 - Enum 클래스 (0) | 2024.04.13 |
[Java] 자바 API 클래스 - Math 클래스 (0) | 2024.04.11 |
[Java] 자바 API 클래스 - StringBuffer 클래스 (0) | 2024.04.11 |
[Java] 자바 API 클래스 - String 클래스 (0) | 2024.04.11 |