首頁  >  文章  >  Java  >  java equals和==的差別

java equals和==的差別

(*-*)浩
(*-*)浩原創
2019-11-15 09:22:589094瀏覽

java equals和==的差別

java9舉例程式碼:              (建議學習:java課程

String str1 = "abc";
String str2 = "abc";
String str3 = new String("abc");
String str4 = new String("abc");
当:  str1 == str2    输出:true    当:str1.equals(str2); 输出:true
当:  str1 == str3 输出:false      当:str1.equals(str3); 输出:true
当:  str3 == str4 输出:false      当:str3.equals(str4); 输出:true

涉及的細節:

- 可以透過String中intern方法,字串物件在常數池中和它相等的字串的引用

str3.intern() == str4.intern()  输出:true
str1.intern().equals(str2.intern())  输出:true
str1.intern() == str1   输出:false
- String str = new String("abc");创建了几个对象?

首先要看常數池裡是否有“abc”這個字串,如果有(String str = "abc";出現時則有),則建立一個,如果沒有,則建立兩個(一個在常數池,一個在堆中)。

equals和==的區別

對於== :

作用於基本資料類型的變量,則直接比較其儲存的「值」是否相等;

作用於引用類型的變量,則比較的是所指向的物件的位址;

#對於equals:

equals方法不能作用於基本資料型別的變數;

如果沒有對Object中equals方法進行重寫,則比較的是引用型別的變數所指向的物件的位址,反之則比較的是內容

#

以上是java equals和==的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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