首頁 > Java > java教程 > 主體

Java開發之 ==和equals()

无忌哥哥
發布: 2018-07-23 09:48:46
原創
2068 人瀏覽過

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

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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板