1. 程式人生 > >java中==與equals的區別

java中==與equals的區別

在最近做題當中,發現==和equals一直讓我傻傻的搞不清楚,因此寫這一篇部落格,來總結一下
學習的結果。

首先上程式碼

           Integer i1=9;
           int  i2=9;
           Integer i3=Integer.valueOf(9);
           Integer i4=new Integer(9);
           System.out.println(i1==i2);
           System.out.println(i1==i3);
           System.out.println(i1==i4);
           System.out.println(i1.equals
(i4)); 結果: true true false true

簡單的說“==”用於比較兩個變數的值的大小,通常用於比較兩個基本型別的資料或者兩個引用
變數,在上例中,我理解的是java會自動呼叫自動裝卸箱機制將封裝型別轉成基本資料型別,所以這幾個變數的數值i1,i2,i3所對應的記憶體中數值是相等的,圖如下:
這裡寫圖片描述
而equals是Object類的提供的方法之一,equals()方法的是可以被覆蓋的,因此,它可以
通過覆蓋的方法讓它比較資料的內容,例如String類equals方法是用於比較兩個獨立物件的內容
是否相同,即堆中的內容是否相同。