日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 基础复习实践 --- Hashcode Equals

發布時間:2025/3/21 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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;} @Override 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。