1. 程式人生 > >Java中equals和==的區別總結

Java中equals和==的區別總結

1)對於==,如果作用於基本資料型別的變數,則直接比較其儲存的 “值”是否相等;如果作用於引用型別的變數,則比較的是所指向的物件的地址。

2)對於equals方法,equals方法是Object的,所有繼承了Object類的類都有該方法,注意:equals方法不能作用於基本資料型別的變數
祖宗類Object中的equals方法比較的是兩個物件地址是否相等,即是否為同一個物件,但一些類對該方法進行了重寫,如果沒有對equals方法進行重寫,則比較的是引用型別的變數所指向的物件的地址;
諸如String、Date、基本資料型別的封裝類等類對equals方法進行了重寫的話,比較的是所指向的物件的內容。(至於還有沒有及其他類重寫了equals方法還需讀者自己去發現)
程式碼示例:


public class Demo1 {
	public static void main(String[] args) {
		Integer a = 299;//當要賦的值在[-128~127]範圍內,則會直接指向該值的引用,不用去new 個物件到堆記憶體中去了。因為	Integer已經快取了資料。
		Integer b = 299;
		System.out.println("a.equals(b)  " + a.equals(b));
		System.out.println("a==b  " + (a==b));
		Integer a1 = 2;
		Integer b1 = 2;
		System.out.println("a1.equals(b1)  "+a1.equals(b1));
		System.out.println("a1==b1  " +(a1==b1));
		String str = "b";
		String c = "aaa" + str;
		String d = "aaab";
		System.out.println("c.equals(d)  " +c.equals(d));
		System.out.println("c==d  " +(c==d));
	}
}

執行結果:
a.equals(b) true
a == b false
a1.equals(b1) true
a1 == b1 true
c.equals(d) true
c == d false

如有不足還請各位大神多多指教


作者:愛撿貝殼的小男孩
版權宣告:本文為博主原創文章,轉載請附上博文連結!