我來自C++背景,今天剛剛開始Java。假設我和一些數據成員有一堂課。例如:如何在java中實現智能成員比較?
現在讓我們說我這樣做:
Person john = new Person("john", "doe");
Person johndoe = new Person("john", "doe");
if (john == johndoe) {
System.out.println("They are Equal");
} else {
System.out.println("They are NOT Equal");
}
這裏的結果是 「不相等」。我明白這是因爲Java正在比較引用(內存地址),並且由於它們是內存中的不同位置,所以測試失敗。我讀過Java不支持運算符重載,所以我不能重載運算符==,那麼有沒有一種方法可以實現我的成員比較? object.equals方法看起來很有前途,但我讀過這是不好的做法,不要重寫這個。
更新: 好吧,我確信重寫等於OK!我找不到那篇文章說它不好。感謝您的幫助,我學習Java時可能會遇到更多問題!
我在某處讀到了你不想重寫等號,但我不明白爲什麼不這樣......我會再次嘗試再次找到該文章併發布它。等於看起來對我來說也是正確的方式。 – cchampion 2010-01-22 04:47:33
你100%絕對應該覆蓋等於。 – danben 2010-01-22 04:48:40
上面的代碼是完美的,只是我不認爲你需要比較全名,因爲全名字段是通過追加名字和姓氏獲得 – 2010-01-22 04:56:08