1. 程式人生 > >6個關於Java包裝類拆箱和裝箱的判斷題,你能做對幾個?

6個關於Java包裝類拆箱和裝箱的判斷題,你能做對幾個?

雖然 Java 語言是典型的面向物件程式語言,但其中的八種基本資料型別並不支援面向物件程式設計,基本型別的資料不具備“物件”的特性——不攜帶屬性、沒有方法可呼叫。為此,Java為每種基本資料型別分別設計了對應的類,稱之為包裝類(Wrapper Classes)。

  • 裝箱(Boxing):由基本型別向對應的包裝類轉換,例如:Integer a = 2;
  • 拆箱(Unboxing):由包裝類向對應的基本型別轉換,例如:int v = a.intValue();

閒言少敘,問題如下:

  1. new Integer(2) == 2 ?
  2. new Integer(2) == new Integer(2) ?
  3. Integer.valueOf(2) == Integer.valueOf(2) ?
  4. Integer.valueOf(1024) == Integer.valueOf(1024) ?
  5. Integer.valueOf(2).intValue() == 2 ?
  6. new Integer(2).equals(new Integer(2)) ?

測試程式碼:

public class BoxingDemo {
    public static void main(String[] args) {
        System.out.println("new Integer(2) == 2 ?\t" + (new Integer(2) == 2));
        System.out.println("new Integer(2) == new Integer(2) ?\t" + (new Integer(2) == new Integer(2)));
        System.out.println("Integer.valueOf(2) == Integer.valueOf(2) ?\t" + (Integer.valueOf(2) == Integer.valueOf(2)));
        System.out.println("Integer.valueOf(1024) == Integer.valueOf(1024) ?\t"
                + (Integer.valueOf(1024) == Integer.valueOf(1024)));
        System.out.println("Integer.valueOf(2).intValue() == 2 ?\t" + (Integer.valueOf(2).intValue() == 2));
        System.out.println("new Integer(2).equals(new Integer(2)) ?\t" + (new Integer(2).equals(new Integer(2))));

    }
}

執行結果:
在這裡插入圖片描述
怎麼樣?你做對了嗎?歡迎留言~