天天看點

帶你領會JDK的靈活拆裝 | 帶你學《Java面向對象程式設計》之五十六

上一篇:包裝才更美:初識包裝類 | 帶你學《Java面向對象程式設計》之五十五

【本節目标】

通過閱讀本節内容,你将進一步了解包裝類的相關内容,并搞懂如何進行基本資料的裝箱、拆箱,學會借助更高版本的JDK簡化程式設計過程。

裝箱與拆箱操作

基本資料類型的包裝類都是為了基本資料類型轉為對象提供的,這樣對于基本類型與包裝類之間就有了如下的操作關系。

  • 資料裝箱:将基本資料類型儲存到包裝類之中,一般可以利用構造方法完成。
    • Integer類:public Integer(int value);
    • Double類:public Double(double value);
    • Boolean類:public Boolean(boolean value);
  • 資料拆箱:從包裝類中擷取基本資料類型:
    • 數值型包裝類已經由Number類定義了拆箱的方法了;
    • Boolean型:public boolean boolean Value();

範例:以int和Integer為例

public class JavaDemo {
    public static void main(String args[]) {
        Integer obj = new Integer(10) ;    //裝箱
        int num = obj.intValue() ;    //拆箱
        System.out.println(num *num) ;
    }
}           

執行結果:100

範例:以double與Double為例

public class JavaDemo {
    public static void main(String args[]) {
         Double obj = new Double(10.1) ;    //裝箱
         double num = obj.doubleValue() ;    //拆箱
         System.out.println(num *num) ;
    }
}           

執行結果:102.00999999999

範例:以boolean與Boolean為例

public class JavaDemo {
    public static void main(String args[]) {
        Boolean obj = new Boolean(true) ;    //裝箱
        boolean num = obj.booleanValue() ;    //拆箱
        System.out.println(num) ;
    }
}           

執行結果:true

可以發現從JDK1.9之後,對于所有包裝類之中提供的構造方法就變為了過期處理,不建議使用者繼續使用了,這是因為從JDK1.5之後為了友善處理提供了自動的裝箱與開箱操作,是以這種手工的模式基本上沒人用了。

範例:觀察自動的裝箱與拆箱

public class JavaDemo {
    public static void main(String args[]) {
        Integer obj = 10 ;    //自動裝箱,此時不再關心構造方法了
        int num = obj ;    //自動拆箱
        obj ++ ;    //包裝類對象可以直接參與數學運算
        System.out.println(num *obj) ; //直接參與數學計算
    }
}           

執行結果:110

除了提供有這種自動的數學運算支援之外,使用自動裝箱最大的好處是可以實作Object接收基本資料類型的操作。

範例:Object接收小數

public class JavaDemo {
    public static void main(String args[]) {
        Object obj = 19.2 ;  //double自動裝箱為Double,向上轉型為object
        double num = (Double) obj ;  //向下轉型為包裝類,再自動拆箱
        System.out.println(num * 2) ;
    }
}           

執行結果:38.4

JDK1.5之後提供的自動支援功能,到了JDK1.9之後為了鞏固此概念,是以将包裝類的構造方法都設定為過期定義了。

但是對于包裝類需要注意一些問題了,關于相等判斷上。

範例:觀察相等判斷

public class JavaDemo {
    public static void main(String args[]) {
       Integer x = 99 ;
       Integer y = 99 ;
       System.out.println(x == y) ;      //true
    }
}
public class JavaDemo {
    public static void main(String args[]) {
       Integer x = 128 ;
       Integer y = 128 ;
       System.out.println(x == y) ;      //false
       System.out.println(x.equals(y)) ;   //true
    }
}           

以後進行包裝類相等判斷的時候一定要使用equals()方法完成,而包裝類本身也需要考慮占位的長度,如果超過了一位的内容,那麼就需要使用equals()比較,如果不超過,則使用“==”即可判斷。

想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。

本内容視訊來源于

阿裡雲大學 下一篇:初識“多繼承小幫手”-接口 | 帶你學《Java面向對象程式設計》之五十七 更多Java面向對象程式設計文章檢視此處