java中==與equals的區別
阿新 • • 發佈:2019-02-02
在最近做題當中,發現==和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方法是用於比較兩個獨立物件的內容
是否相同,即堆中的內容是否相同。