Java 基础复习实践 --- Hashcode Equals
雖然很多知識點書籍都有整理,但是記性總是不好,所以決定將一些細小容易混淆的概念,通過簡單的 Demo 實踐,加深復習。特此開一個坑,堅持就是勝利。
本章內容主要為了理解以下幾個知識點:
- equals() 的作用是什么?
- equals() 與 “==”的區別是什么?
- hashcode() 的作用是什么?
- hashcode() 與 equals()之間有什么聯系?
目錄
- 目錄
- equals() 的作用
- 沒有覆蓋 equals() 方法
- 覆蓋 equals() 方法
equals() 的作用
Indicates whether some other object is “equal to” this one.
equals()是用來?判斷兩個對象是否相等。
equals() 定義在 JDK 的 Object.java 中。通過判斷兩個對象的地址是否相等(即,是否是同一個對象)來區分它們是否相等。源碼如下:
| public boolean equals(Object obj) { return (this == obj);} |
既然是在 Object 類中定義了該方法,就表明了 Java 所有類都實現了 equals() 方法,所以所有類都可以通過該方法去判斷兩個對象是否相等。
默認的 equals() 方法等同于 ”==” 方法,所以我們一般會重寫 equals() 方法 —-> 兩個對象的內容相等,返回 true ,否則返回 false。
所以我們可以根據是否?重寫 equals()?方法將類分為兩類:
1.若某個類沒有覆蓋 equals() 方法,當它的通過 equals() 比較兩個對象時,實際上是比較兩個對象是不是同一個對象。這時,等價于通過“==”去比較這兩個對象
2.覆蓋類的 equals() 方法,來讓 equals() 通過其它方式比較兩個對象是否相等。通常的做法是:若兩個對象的內容相等,則 equals()方法返回true;否則,返回 false 。
沒有覆蓋 equals() 方法
| public class HashcodeAndEquals { private static <T> void out(T t) {System.out.println(t);} public static void main(String[] args) { // 實例化兩個 Person 對象Person p1 = new Person("小明", 12);Person p2 = new Person("小明", 12); // 通過 equals() 比較他們是否相等out(p1.equals(p2));} private static class Person { int age;String name; public Person(String name, int age) { this.age = age; this.name = name;} public String toString() { return name + "--- age:" + age;}}} |
輸出為
false
覆蓋 equals() 方法
from:?http://imxie.cc/2016/07/18/Review-the-Java-basic-equals-hashcode/?utm_source=tuicool&utm_medium=referral
總結
以上是生活随笔為你收集整理的Java 基础复习实践 --- Hashcode Equals的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么样才算是精通 Python?
- 下一篇: Java实现 二叉搜索树算法(BST)