> Java > java지도 시간 > Auto Boxing 및 Unboxing은 Java에서 실제로 어떻게 작동합니까?

Auto Boxing 및 Unboxing은 Java에서 실제로 어떻게 작동합니까?

Susan Sarandon
풀어 주다: 2024-11-20 02:59:01
원래의
701명이 탐색했습니다.

How Does Auto Boxing and Unboxing Really Work in Java?

Java의 자동 박싱 및 언박싱: 심층 분석

JDK 5.0에 도입된 이후 자동 박싱 및 언박싱은 편리한 기능이 되었습니다. 자바에서. 그러나 이러한 프로세스의 기본 메커니즘을 이해하려고 하면 혼란이 발생합니다.

Auto Boxing

이전에는 Auto Boxing이 래퍼에 구현된 생성자에만 의존한다고 믿었습니다. 수업. 그러나 바이트코드를 조사해 보면 다른 이야기가 드러납니다.

int를 정수로 박싱하는 경우:

Integer n = 42;
로그인 후 복사

컴파일러는 다음을 생성합니다.

bipush 42
invokestatic java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
로그인 후 복사

이는 다음을 보여줍니다. valueOf() 메서드가 생성자 대신 사용됩니다. 이 디자인 선택은 캐싱을 활성화하고 박싱 중에 불필요한 개체 생성을 방지합니다.

자동 언박싱

마찬가지로 언박싱에는 생성자가 직접 관여하지 않습니다. 예를 들어 정수를 int로 unboxing하려면:

int n = Integer.valueOf(42);
로그인 후 복사

등가 바이트 코드는 다음과 같습니다.

bipush 42
invokestatic java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual java/lang/Integer.intValue:()I
로그인 후 복사

여기에서 intValue() 메서드는 래퍼 개체에서 기본 값을 검색합니다.

결론

Java의 Auto boxing과 unboxing은 각각 valueOf() 및 *Value() 메소드를 통해 구현됩니다. 이러한 방법을 사용하면 래퍼 클래스와 기본 유형 간의 효율적인 변환이 가능해 개발자가 의존하는 편의성과 유연성을 얻을 수 있습니다.

위 내용은 Auto Boxing 및 Unboxing은 Java에서 실제로 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿