>  기사  >  Java  >  Java에서 래퍼 클래스의 박싱 및 언박싱을 올바르게 수행하는 방법은 무엇입니까?

Java에서 래퍼 클래스의 박싱 및 언박싱을 올바르게 수행하는 방법은 무엇입니까?

PHPz
PHPz앞으로
2023-05-10 08:43:271616검색

    1. 복싱

    1. 개념

    소위 복싱(Boxing)은 실제로 더블을 더블로 바꾸는 등 기본형을 패키징 클래스로 변환하는 것입니다. 박싱은 수동 박싱과 자동 박싱(자동 박싱)으로 구분됩니다. 패키징 클래스를 수동으로 인스턴스화하면 이것이 수동 박싱입니다. JDK 1.5 이전에는 수동으로 Boxing을 수행해야 했지만, JDK 1.5부터는 수동 조작 없이 자동으로 Boxing을 수행할 수 있어 개발이 간편하고 편리합니다.

    2. 사례

    다음 사례는 수동 복싱과 자동 복싱 구현 과정입니다. JDK 1.5 이전과 이후에는 복싱을 수동 복싱과 자동 복싱으로 나눌 수 있으므로 다들 주의하셔야 합니다.

    public class BoxTest {
        public static void main(String[] args) {
    	//JDK 1.5之前的拆装箱过程--手动拆装箱
    	byte b = 10;
    	//手动装箱
    	Byte b1 = Byte.valueOf(b);
    	System.out.println("手动装箱后的结果,b1="+b1);
            //手动装箱的另一种形式
    	int m = 100;
            Integer obj = new Integer(m);  
            //手动拆箱的另一种形式
            int n = obj.intValue(); 
            System.out.println("n = " + n);
    	//JDK 1.5之后的拆装箱过程--自动拆装箱        
    	int i = 10;
    	//自动装箱
    	Integer i001 = i;
    	System.out.println("自动装箱后的结果,i001="+i001);
        }
    }

    2. 언박싱

    1. 컨셉

    일명 언박싱(Unboxing)은 실제로 더블을 더블로 바꾸는 등 포장 형태를 기본 형태로 바꾸는 것입니다. 마찬가지로 언박싱도 수동 언박싱과 자동 언박싱(Auto Boxing)으로 구분됩니다. 패키징 클래스의 수동 인스턴스화는 수동 언박싱입니다. JDK 1.5 이전에는 언박싱을 수동으로 수행해야 했습니다. JDK 1.5 이후에는 언박싱을 자동으로 수행할 수 있습니다.

    2. 사례

    다음 사례는 수동 언박싱과 자동 언박싱 구현 과정입니다. JDK 1.5 이전과 이후의 언박싱은 수동 언박싱과 자동 언박싱으로 나누어질 수 있으므로 다들 주의하시기 바랍니다.

    public class BoxTest {
        public static void main(String[] args) {
    	//JDK 1.5之前的拆装箱过程--手动拆装箱
    	byte b = 10;
    	//手动装箱
    	Byte b1 = Byte.valueOf(b);
    	System.out.println("手动装箱后的结果,b1="+b1);
    	//手动拆箱
    	byte b2 = b1.byteValue();
    	System.out.println("手动拆箱后的结果="+b2);
    	//JDK 1.5之后的拆装箱过程--自动拆装箱        
    	int i = 10;
    	//自动装箱
    	Integer i001 = i;
    	System.out.println("自动装箱后的结果,i001="+i001);
    	//自动拆箱
    	int i002 = i001;
    	System.out.println("自动拆箱后的结果,i002="+i002);
        }
    }

    3. 요약

    자동 박싱과 자동 언박싱은 컴파일 단계에서만 발생하며 그 목적은 코드 작성을 줄이는 것입니다. 성능 관점에서 볼 때 박싱 및 언박싱 프로세스는 코드의 실행 효율성에 영향을 미칩니다. 왜냐하면 컴파일된 클래스 코드는 기본 유형과 참조 유형을 엄격하게 구별하므로 컴파일 단계에서 박싱 및 언박싱을 계속 수행해야 하기 때문입니다. 컴파일 후 원본으로 돌아갑니다. 또한 자동 unboxing 중에 할당이 부적절할 경우 아래와 같이 NullPointerException이 발생할 수 있습니다.

    Integer n = null;
    //这里就会产生NPE空指针异常
    int m = n;

    위 내용은 Java에서 래퍼 클래스의 박싱 및 언박싱을 올바르게 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제