1. 포장 객체
▷ 기본 타입(byte, char, short, int, long, float, double, boolean)의 값을 갖는 객체
▷ 포장하고 있는 기본 타입의 값을 변경할 수 없고, 단지 객체로 생성하는 목적
NO | 기본 타입 | 포장 클래스 |
1 | byte | Byte |
2 | char | Character |
3 | short | Short |
4 | int | Integer |
5 | long | Long |
6 | float | Float |
7 | double | Double |
8 | boolean | Boolean |
2. 박싱과 언박싱
▷ 박싱 : 기본 타입 값을 포장 객체로 만드는 과정, 포장 클래스 변수에 기본 타입 값이 대입 시 발생
▷ 언박싱 : 포장 객체에서 기본 타입 값을 얻어내는 과정, 기본 타입 변수에 포장 객체가 대입 시 발생
Integer obj = 100; // 박싱
int value = obj; // 언박싱
int value = obj + 50; // 언박싱 후 연산
public class BoxingUnBoxingExample { public static void main(String[] args) { // Boxing Integer obj = 100; System.out.println("value : " + obj.intValue()); // Unboxing int value = obj; System.out.println("value : " + value); // 연산 시 Unboxing int result = obj + 100; System.out.println("result : " + result); // 컬렉션이라는 자료 구조 형태에서 사용하기 위해서 포장을 합니다. // 객체 형태로 되어 있어야함. } } // 출력 : // value : 100 // value : 100 // result : 200
3. 문자열을 기본 타입 값으로 변환
▷ 포장 클래스는 문자열을 기본 타입 값으로 변환할 때도 사용합니다.
▷ 대부분의 포장 클래스에는 'parse+기본타입' 명으로 되어 있는 정적 메소드가 있습니다.
4. 포장 값 비교
▷ 포장 객체는 번지를 비교하므로 내부 값을 비교하기 위해 ==와 != 연산자를 사용할 수 없습니다.
▷ 다음 범위의 값을 갖는 포장 객체는 ==와 != 연산자로 비교할 수 있지만,
내부 값을 비교하는이 아니라 객체 번지를 비교하는 것입니다.
NO | 타입 | 값의 범위 |
1 | boolean | true, false |
2 | char | \u0000 ~ \u007f |
3 | byte, short, int | -128 ~ 127 |
▷ 대신 포장 클래스의 equals() 메소드로 내부 값을 비교할 수 있습니다.
public class ValueCompareExample { public static void main(String[] args) { // -128~127 초과 값일 경우 Integer obj1 = 300; Integer obj2 = 300; System.out.println("==: " + (obj1 == obj2)); System.out.println("equals(): " + obj1.equals(obj2)); System.out.println(); // -128~127 범위 값일 경우 Integer obj3 = 10; Integer obj4 = 10; System.out.println("==: " + (obj3 == obj4)); System.out.println("equals(): " + obj3.equals(obj4)); } } // 출력 : // ==: false // equals(): true // // ==: true // equals(): true
▷ 범위를 초과하면 객체의 번지는 달라지고 equals를 통한 메소드 내부의 값은 같다고 출력됩니다.
▷ 범위 내에 있으면 객체의 번지와 메소드 내부 값은 같습니다.
포장을 사용하는 이유는 이후에 컬렉션이라는 자료 구조 형태에서 사용하기 위해서 포장을 합니다.
따라서, 객체 형태로 되어 있어야합니다!
사용 방법을 좀 알고 있는 것이 좋겠네요!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

'BackEnd > Java' 카테고리의 다른 글
[java] 이것이 자바다 ch12 날짜와 시간 클래스 (0) | 2023.01.20 |
---|---|
[java] 이것이 자바다 ch12 수학(Math) 클래스 (0) | 2023.01.19 |
[java] 이것이 자바다 ch12 문자열 클래스 (0) | 2023.01.19 |
[java] 이것이 자바다 ch12 System 클래스 (0) | 2023.01.19 |
[java] 이것이 자바다 ch12 java.base 모듈(Object 클래스) (0) | 2023.01.19 |