首頁 >Java >Java基礎 >java中equals與「==」的區別

java中equals與「==」的區別

王林
王林原創
2019-11-19 17:03:352080瀏覽

java中equals與「==」的區別

區別:

== 比較的是變數(堆疊)記憶體中存放的物件的(堆)記憶體位址,用來判斷兩個物件的位址是否相同,即是否是指相同一個物件。比較的是真正意義上的指標操作。

equals用來比較的是兩個物件的內容是否相等,由於所有的類別都是繼承自java.lang.Object類別的,所以適用於所有對象,如果沒有對該方法進行覆蓋的話,呼叫的仍然是Object類別中的方法,而Object中的equals方法回傳的卻是==的判斷。

java中的資料型別可以分為兩類:

#基本資料類型

byte,short,char,int,long,float,double,boolean

基本資料型別之間的比較需要用雙等號(==),因為他們比較的是值。

引用資料型別

介面、類別、陣列等非基本資料型別

Java中的字串String屬於引用資料型,因為String是一個類別。

當他們用(==)進行比較的時候,比較的是他們在記憶體中的存放位址,所以,除非是同一個new出來的對象,他們的比較後的結果為true,否則比較後結果為false。因為沒new一次就會重新開闢一個新的堆內存空間

Entity entity = new Entity();
Entity entity1 = new Entity();
Entity entity2 = entity;
        
System.out.println(entity==entity2);
System.out.println(entity.equals(entity2));

System.out.println(entity.equals(entity1));
System.out.println(entity==entity1);

結果:

true
true
false
false

#總結:

對於複合數據類型之間進行equals比較,在沒有覆寫equals方法的情況下,他們之間的比較還是內存中的存放位置的地址值,跟雙等號(==)的結果相同;如果被複寫,按照複寫的要求來。

 == 的作用:

基本型別:比較的就是值是否相同;

引用型別:比較的就是位址值是否相同。

equals 的作用:

引用類型:預設情況下,比較的是位址值,重寫該方法後比較物件的成員變數值是否相同。

推薦教學:java入門教學

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

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