==號在比較基本資料型別時比較的是值,而用==號比較兩個物件時比較的是兩個物件的位址值
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中文網其他相關文章!