【本節目标】
通過閱讀本節内容,你将進一步了解包裝類的相關内容,并搞懂如何進行基本資料的裝箱、拆箱,學會借助更高版本的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面向對象程式設計文章檢視此處