首頁  >  文章  >  Java  >  Java開發之 ==和equals()

Java開發之 ==和equals()

无忌哥哥
无忌哥哥原創
2018-07-23 09:48:462052瀏覽

==號在比較基本資料型別時比較的是值,而用==號比較兩個物件時比較的是兩個物件的位址值

equals()在不重寫的情況下是比較記憶體位址,但Java中大多數類別都重寫了equals()方法,所以是比較值

String str1 = "abc";
String str2 = "abc";
System.out.println(str1.equals(str2));
System.out.println(str1 == str2);

這種情況下,傳回true和true,第二個= =也回傳true的原因:

因為記憶體中的常數池屬於方法區,當建立str1時候,常數池中沒有,就在常數池中建立物件“abc”,在建立str2時候,常數池中已經有,所以第二次創建時候就直接使用,所以地址是相同的

如果改為

String str1 = new String("abc");
String str2 = new String("abc");

str1==str2 返回false,因為是創建了兩個對象,地址不同。

以上是Java開發之 ==和equals()的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn