Java - 自動裝箱與拆箱詳解


  1、裝箱與拆箱

  裝箱,將基本數據類型轉為包裝類型。拆箱,將包裝類型轉為基本數據類型。

        // Byte, Short, Integer, Long, Double, Float, Boolean, Character
        // 自動裝箱,將基本數據類型轉為包裝類型
        Integer i1 = 200;
        Integer i2 = 200;
        // 自動拆箱,將包裝類型轉為基本數據類型
        int i3 = i1;
        int i4 = i2;

   

2、基本數據類型與包裝類型

  

  

  3、裝箱與拆箱如何實現

  裝箱的時候JVM自動調用的是Integer的valueOf(value)方法。拆箱時JVM自動調用Integer的intVlue()方法。裝箱與拆箱的實現過程即為:裝箱過程是通過調用包裝器的valueOf(value)方法實現的,而拆箱過程是通過調用包裝器的 xxxValue()方法實現的。(xxx代表對應的基本數據類型),包裝類型做算術運算時,會自動拆箱為基本數據類型再進行。

 

4、面試中常見的問題

4.1 整形類型

        // Byte, Short, Integer, Long, Double, Float, Boolean, Character
        // 自動裝箱,將基本數據類型轉為包裝類型
        Integer i1 = 200;
        Integer i2 = 200;
        // 自動拆箱,將包裝類型轉為基本數據類型
        int i3 = 127;
        int i4 = 127;
        
        System.out.println(i1 == i2);
        System.out.println(i3 == i4);

  輸出結果:

  false

  true

  原因需要查看Integer.valueOf(int i)方法。

  

4.2 浮點類型

        Double d1 = 2.3;
        Double d2 = 2.3;
        System.out.println(d1 == d2);
        
        Double d3 = 1000.1;
        Double d4 = 1000.1;
        System.out.println(d3 == d4);

  輸出結果:

  false

  false

 

4.3 綜合

    public static void main(String[] args) {
        
        Integer a1 = 1;
        Integer a2 = 2;
        Long b1 = 2L;
        Long b2 = 3L;
        
        // ture
        System.out.println(b2 == (a1+a2));
        // true
        System.out.println(b2 == (a1+b1));
        // false
        System.out.println(b2.equals(a1+a2));
        // true
        System.out.println(b2.equals(a1+b1));
    }

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM