筆記 autoboxing、 unboxing ,equals 和 == 差別

基本(Primitive)資料型態: int、double、boolean宣告變數,以及您在程式中直接寫下的字面常量,。
資料型態不是物件,有些時候需要將基本型態轉換為物件
使用包裹型態(Wrapper Types)才能將基本資料型態包裝為物件

例如:

J2SE 1.4.2 之前

Integer integer = new Integer(10);

J2SE 5.0 之後

Integer integer = 10;

編譯器在背後根據寫下的陳述,進行自動裝箱(Autoboxing)動 作

同樣的動作適用於 boolean、byte、short、char、long、float、double等基本型態,

分別會使用對應的包裹型態(Wrapper Types)Boolean、Byte、Short、Character、Integer、Long、Float或Double。

自動裝箱運用的方法還可以如下:

int i = 10;
Integer integer = i;

您也可以使用更一般化的Number,例如:

Number number = 3.14f;

自動拆箱(Unboxing):

Integer fooInteger = 10;
int fooPrimitive = fooInteger;


1. ==
測試物件參考時,
唯有當兩個參考指向同一物件時,==運算子的結果才為true,
同樣的,
唯有當兩個參考指向不同物件時,!=運算子的結果才為true,
這兩個運算子的處理與物件的內容無關。

2. equals
比較兩個物件是否為相同類型的類別後再比較其內容值是否相同,是就傳回true,否就傳回false。

public class BreakTest {
public static void main(String[] args){
Integer i1 = 800;
Integer i2 = 300;
if (i1 .equals(i2)){
System.out.println("i1 == i2");
}
else{
System.out.println("i1 != i2");
}




  • 參考資料:
  • autoboxing、 unboxing
  • 小心使用 boxing
  • equals、==
  • 留言

    熱門文章