기본 유형과 압축된 기본 유형
주요 차이점
신원과 신원 값:
기본 요소: 정체성이 없습니다. 동일한 값을 가진 두 개의 프리미티브는 항상 동일합니다.
패키지: 객체이며 정체성을 가지고 있습니다. 두 객체는 동일한 값을 가질 수 있지만 ID는 다를 수 있습니다.
Null 값:
기본값: 항상 기본값이 있습니다(예: int의 경우 0).
Packed: null일 수 있으며, 제대로 처리되지 않으면 NullPointerException 예외가 발생할 수 있습니다.
성능:
기본 요소: 시간과 공간 측면에서 더 효율적입니다.
패키지: 추가 객체 생성으로 인한 오버헤드가 발생합니다.
프리미티브와 패키지를 혼합할 때 발생하는 일반적인 문제
문제가 있는 예:
ComparatornaturalOrder = (i, j) -> (i 문제: 비교 i == j는 값이 아닌 참조를 비교합니다.
잘못된 동작: naturalOrder.compare(new Integer(42), new Integer(42))는 0 대신 1을 반환합니다.해결책:
Integer.
클래스의 CompareTo 메서드나 유틸리티 메서드를 사용하세요.ComparatornaturalOrder = Integer::compare; 또는 원래 비교기를 수정합니다.
ComparatornaturalOrder = (iBoxed, jBoxed) -> { int i = iBoxed; int j = jBoxed; return (i 2. Autounboxing 및 NullPointerException
null이 될 수 있는 압축된 유형을 사용하는 경우 객체가 null이면 자동 unboxing에서 예외가 발생할 수 있습니다.문제가 있는 예:
Integer i = null; if (i == 42) { System.out.println("Inacreditável"); }문제: i는 null입니다. 42와 비교하면 null autounboxing이 발생하여 NullPointerException이 발생합니다.
해결책: 가능하면 기본 유형을 사용하십시오.int i = 0; if (i == 42) { System.out.println("Inacreditável"); }3. Autoboxing/Unboxing으로 인한 성능 저하
집중적인 작업에서 래핑된 유형을 실수로 사용하면 오토박싱 및 불필요한 객체 생성으로 인해 성능 저하가 발생할 수 있습니다.문제가 있는 예:
Long sum = 0L; for (long i = 0; i문제: sum은 Long으로 가득 차 있습니다. 각 반복마다 오토박싱/언박싱이 발생합니다.
영향: 코드 속도가 훨씬 느려지고 메모리 사용량이 과도해집니다.
해결책:
집중적인 작업에서는 지역 변수에 기본 유형을 사용합니다.long sum = 0L; for (long i = 0; i패키지 유형을 사용해야 하는 경우
- 컬렉션: 일반 컬렉션(예: 목록)에서는 기본 유형을 사용할 수 없습니다.
- 일반 매개변수: 일반 유형은 기본 유형(예: ThreadLocal)을 지원하지 않습니다.
- 객체를 요구하는 API: 특정 API에는 기본 유형 대신 객체가 필요합니다.
우수 사례
- 기본 유형 선호: 가능하면 단순성과 효율성을 위해 기본 유형을 사용하세요.
- 오토박싱/언박싱 주의: 오토박싱은 자세한 내용을 줄이지만 미묘한 오류가 발생할 수 있습니다.
- 래핑에서 ==와의 비교 방지: equals()와 같은 메서드를 사용하거나 래핑되지 않은 값을 비교하세요.
- Null 확인: 패키지 유형으로 작업할 때 Null이 될 수 있고 NullPointerException이 발생할 수 있다는 점에 유의하세요.
요약
기본 유형:
더 간단하고 빠릅니다.
null일 수 없습니다.
ID가 없습니다(값만 있음).포장 유형:
컬렉션 및 일반 API에 사용하는 데 필요합니다.
null일 수 있습니다.
객체 ID가 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3