1. 程式人生 > >Long的equals和相同數值的Integer比較為何為false?

Long的equals和相同數值的Integer比較為何為false?

看程式碼:

   @Test
    public  void demo2(){
        Integer integer100 = 100;
        int int100 = 100;
        Long long200 = 200l;
        System.out.println(long200.equals(integer100 + int100));
    }

結果輸出為false。
分析過程:
①integer100+int100就會得到一個型別為int且value為200的基礎資料型別a
②Long的equals方法將a進行裝箱,裝箱所得到的是型別為Integer的物件b
③因為b與long200為不同的型別的物件,所以輸出false;

第三點理由如下:

這裡寫圖片描述

圖中 obj 必須為 Long的的例項時才返回數值
如果傳入的型別不是Long,那麼全部返回false,這就是原因。

總結:Long 與 相同值的 包裝類 用equals比較時,如果傳入的型別不是Long,那麼全部返回false