由Equals與 的區別所引發的問題

2021-06-18 15:14:16 字數 1035 閱讀 8765

(1)如果通過string str = "kingsea"這樣對string變數賦值,兩種方式比較的結果是一樣的。因為這樣賦的內容一樣時,系統就會直接從位址池裡取出「kingsea」給str2,所以str1與str2的位址是一樣的。但是如果通過string str = new string("kingsea");這樣對string物件賦值,兩種比較的結果就不一樣了。如果賦的內容一樣,用==比較多結果是false,用equals比較的結果是true。如果賦的內容不一樣,==與equals比較的結果都是false。這是因為new出了個新物件,系統就得為他倆都分配位址。這樣他倆的位址是不一樣的,但內容還是一樣的。

所以可以理解為==比較的是位址,equals比較的是內容。但是這樣的話,下面就有問題出現了,請看下面。

(2)我新建了個person類如下

public class person

}

我new兩個物件:person person1 = new person("kingsea";22);person person2 = new person("kingsea";22);然後用==和equals比較,可是結果卻都為false;這是為什麼呢?後來發現了原來string這個類裡的equals方法已經重寫過了。而我建的person類沒有重寫。所以結果是不一樣的。

可以通過eclipse自動寫這個方法,也可以自己去寫。具體內容為: 

@override

public boolean equals(object obj)

重寫equals時也必須得重寫hashcode方法,這個也可以通過eclipse自動寫這個方法,也可以自己去寫。具體內容為:

@override

public int hashcode()

這個也可以通過eclipse自動寫這個方法,也可以自己去寫。具體內容為:

@override

public string tostring()

由ping所引發的思考

今天看了掘金一片關於ping原理的文章,引發了如下問題 ping www.baidu.com和ping baidu.com dns所解析出來的ip不一致?得到了如下2種答案 關鍵字 負載均衡 通過負載均衡來分發請求到不同伺服器 關鍵字 網域名稱和伺服器的關係 最終結果 如上圖,訪問baidu.com...

與equals的區別

注意 當比較兩個基本資料型別的變數是否相等時 基本資料型別包括 byte short int long float double 當它們的值相同時,則 結果就為true eg public class class6 1 public static void main string args stri...

與equals的區別

public class equaltest 執行結果為 t1 t2 false t1 t2 t3 true t3 t4 true i1.equals i2 false i3.equals i1 i2 true i3.equals i4 true st1 st2 false st1 st2 st3 ...