이 글의 내용은 Java에서 패키징 클래스가 무엇인지에 관한 것입니다. Java 패키징 클래스의 응용 시나리오에 대한 소개에는 특정 참고 가치가 있습니다. 도움이 필요한 친구가 참고할 수 있기를 바랍니다.
오늘은 Java 패키징 클래스의 유래와 자동 boxing 및 unboxing의 개념과 원리에 대해 이야기하겠습니다.
Java 디자인은 원래 8개의 기본 데이터 유형과 8개의 해당 패키징 데이터 유형을 제공했습니다. 우리는 Java가 객체지향 프로그래밍을 위한 고급 언어라는 것을 알고 있으므로 객체지향 프로그래밍에서 기본 데이터 유형을 제공할 수 없는 문제를 해결하기 위해 래퍼 유형을 정확하게 제공합니다.
기본 데이터 유형과 해당 패키징 유형은 다음과 같습니다.
기본 데이터 유형 | 포장 유형 |
---|---|
byte | Byte |
boolean | Boolean |
short | 짧은 |
문자 | 문자 |
int | Integer |
long | Long |
float | Float |
double | Double |
다음은 패키징 유형의 상속 구조 다이어그램입니다.
위의 차트를 통해 기본 유형과 포장 유형을 포괄적으로 이해할 수 있습니다.
1. 컬렉션 클래스 제네릭은 패키징 클래스일 수 있습니다.
// 编译报错 List<int> list1 = new ArrayList<>(); // 正常 List<Integer> list2 = new ArrayList<>();
2. 기본 데이터 유형의 멤버 변수는 기본값을 가질 수 없습니다. , 위 코드에서 상태의 기본값은 0입니다. 정의에서 0이 실패를 나타내는 경우 문제가 있습니다. 이 경우 래퍼 클래스 Integer만 사용할 수 있으므로 기본값은 없습니다. 기본값 효과.
3. 메소드 매개변수는 null 값 정의를 허용합니다.
private int status;위 코드를 보면 메소드 매개변수는 기본 데이터 유형 int를 정의하므로 숫자를 전달해야 하며 null을 전달할 수 없는 경우가 많습니다. , 우리는 null 을 전달할 수 있기를 희망하므로 이 경우 패키징 클래스를 사용하는 것이 더 적절합니다. 더 많은 적용 시나리오가 있으므로 하나씩 나열하지는 않겠습니다. 더 많은 포장 적용 시나리오에 대해 논의하려면 메시지를 남겨주세요. 자동 박싱 및 언박싱Java 5에는 자동 박싱 및 언박싱 메커니즘이 추가되어 기본 데이터 유형과 패키징 유형 간의 상호 변환 작업을 제공합니다.
Autoboxing
Autoboxing은 기본 데이터 유형을 패키징 유형으로 자동 변환하는 것을 의미합니다. Java 5 이전에는 기본 데이터 유형을 패키징 유형으로 변환하는 경우에만 이 작업을 수행할 수 있었습니다.
private static void test1(int status){ System.out.println(status); }위 3가지 메소드 모두 변환이 가능하지만, 세 번째 메소드는 Java 5 이전에는 컴파일이 실패했고, 세 번째 메소드 역시 현재의 자동 박싱 기능입니다. 또한 첫 번째 생성자 메서드는 권장되지 않으며 더 이상 사용되지 않는 것으로 표시되었습니다. 실제로 자동 박싱의 원리는 두 번째 메소드의 Integer.valueOf 메소드와 같이 패키징 클래스의 valueOf 메소드를 호출하는 것입니다.
자동 언박싱
자동 언박싱은 자동 패키징과 달리 포장 유형을 기본 데이터 유형으로 자동 변환하여 설치 및 개봉 시 이해하기 쉽습니다.
Integer i1 = new Integer(8); Integer i2 = Integer.valueOf(8); // 自动装箱 Integer i3 = 8;위의 예를 이어가면 i3을 i4에 할당하는 것이 자동 언박싱 기능입니다. 자동 박싱의 원리는 i5의 Integer의 intValue 메서드와 같이 패키징 클래스의 xxValue 메서드를 호출하는 것입니다. 자동 boxing 및 unboxing은 위의 예에 반영되었을 뿐만 아니라, 메소드가 매개변수를 받고 객체가 매개변수를 설정하면 자동으로 boxing 및 unboxing이 가능합니다.
위 내용은 Java의 래퍼 클래스란 무엇입니까? Java 패키징 클래스의 애플리케이션 시나리오 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!