1. 程式人生 > >java中equals方法的重寫

java中equals方法的重寫

Object類中定義有:public blooean equals(Object obj)方法,提供定義“物件內容相等”的邏輯。

程式碼小案例

package com.jackfujia.oo2;

public class TestEquals {
    public static void main(String[] args) {
        Object obj;
        String str;
        User u1 = new User(1000, "付佳", "123456");
        User u2 = new User(1000, "付翊坤", "123456");
        System.out.println(u1 == u2);
        System.out.println(u1.equals(u2));
        
        String str1 = new String("我是大好人");
        String str2 = new String("我是大好人");
        
        //String 類也重寫了equals方法,才能對字元進行比對。
        System.out.println(str1 == str2);
        System.out.println(str1.equals(str2));
        
        
        
    }
}

class User{
    int id;
    String name;
    String pwd;
    
    public User(int id, String name, String pwd) {
        super();
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }
    
    //重寫equals方法,讓其只針對id進行比對。
    //用alt + shift + s 選擇 Generate hashCode() and equals()...選項自動生成
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + id;
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        User other = (User) obj;
        if (id != other.id)
            return false;
        return true;
    }


}

相關推薦

javaequals方法重寫

Object類中定義有:public blooean equals(Object obj)方法,提供定義“物件內容相等”的邏輯。 程式碼小案例 package com.jackfujia.oo2; public class TestEquals {     public

java.equals()方法和==號的區別

主方法要進棧 ==號和equals()方法都是比較是否相等的方法,那它們有什麼區別和聯絡呢?  首先,==號在比較基本資料型別時比較的是值,而用==號比較兩個物件時比較的是兩個物件的地址值,實際上.equals()方法比較的就是相當於把變數進行打包,就是比較包裡面的內容: int

Javaequals方法造成空指標異常的原因

問題: 當查詢已修改的與未修改的做比較的時候,之前為null的值呼叫equals方法與其他值做比較的時候,會導致丟擲空指標異常 反思: 為了避免記憶體溢位,我們在無需類外呼叫的方法前,一般不加static關鍵字(因為靜態方法會常駐記憶體,其生存週期與整個專案的生存週期是一致的)所以,我們

Java方法重寫呼叫

上學期學了java,一個暑假沒有用,很多java的“精髓”都忘記了。週末在寫資料結構的作業的時候,要求寫一個迴圈連結串列的類,並且繼承之前寫的一個線性表的類。因為重寫的一些重要的東西忘記了,花了大量的時間一直在報空指標異常,終於發現了問題,並請教了前輩才算是解決了這個問題。

[每日一問]---Java方法重寫(Overriding)和方法過載(Overloading)是什麼意思?

方法重寫是子類重新定義父類的方法 方法過載發生在同一個類裡兩個或多個方法的方法名相同但是引數列表不同 1)方法重寫的原則: 方法名、引數列表必須與原方法相同 返回型別可以相同也可以是原型別的子型

Javaequals方法的用法以及==的用法

equals 方法是 java.lang.Object 類的方法。 有兩種用法說明: (1)對於字串變數來說,使用“==”和“equals()”方法比較字串時,其比較方法不同。 “==”比較兩

淺析Javaequals()方法和hashCode方法

今天去面試,總覺得自己什麼都懂了,應該問題不大,當被問到“未重寫的equals()方法和hashCode()方法裡面的內容是什麼?為什麼在重寫equals()方法的同時需要重寫hashCode()方法?”時,說實話,一臉懵逼啊!!! 一、equals()方法 1、什麼時候應

Javaequals方法造成空指標異常的原因及解決方案

前言 博主最近在做一個專案的除錯工作,期間遇到了一個會導致丟擲空指標異常的小問題,說它是小問題,是因為真的只是在寫程式碼的時候注意一下就好了,但是這裡還要寫一個部落格,就是為了剖析這個問題,然後給自己做個備忘,也給看部落格的各位提個醒。 正文 bug描

Java方法重寫(Overriding)與方法過載(Overloading)

1.定義 Overriding和Overloading對Java程式設計新手來說是兩個比較容易混淆的概念。 方法過載(Overloading)是一個類中定義了多個方法名相同,而他們的引數的數量不同或數量相同而型別和次序不同。 方法重寫(Overriding)是兩個方法具有相

java覆蓋(重寫equals方法

package com.forming.sapinterface; import sun.java2d.pipe.SpanClipRenderer; import java.util.Objects; public class Sap { private Integer rsnu

JavaHashSet要重寫equals方法和hashCode方法

下面給出一個屬性不同但雜湊碼相同的例子:import java.util.HashSet;import java.util.Iterator;import java.util.Set;class Person {private String name;private int id;Person(S

javaequals的另類用法以及Objects其他方法介紹

equals方法對於java程式設計師來說應該是常用的方法,它通常用來對字串型別的比較,通常,我們的寫法是這樣: //案例1 Map<String,Object> map1 = new HashMap<>(); Map<String,Object>

javastatic方法不能被重寫但是能重定義

1. static方法不能被重寫 如下例項會出現編譯錯誤:This instance method cannot override the static method from Animal 示例1: class Animal { public static void w

java方法重寫,屬效能重寫嗎?

覆寫是多型的一種表現,我們平時所說的覆寫一般是針對方式來說,在網上看到過有人討論試著覆寫屬性,於是有點興趣,屬性真能覆寫嗎?回答問題之前,我們還是回憶一下方法的覆寫具備哪些條件,或都說哪些方法能覆寫。 先回顧一下方法覆寫要注意的地方: 1、過載(也叫過載)時只與方法特徵有關,但重寫(覆寫)是會進一步檢查兩個方

java靜態方法不能被重寫(覆蓋)

靜態方法可以被繼承,但是,不能被覆蓋,即重寫。如果父類中定義的靜態方法在子類中被重新定義,那麼在父類中定義的靜態方法將被隱藏。可以使用語法:父類名.靜態方法呼叫隱藏的靜態方法。 如果父類中含有一個靜態

equals方法重寫

else 另有 舉例 spa all == ring pub 自定義類 在java中常見的equals方法的重寫: 舉例:一個自定義類ball如下 public class Ball { private String name; private int w

java方法

允許 多個 != 返回值 如果 系統底層 所在 格式 影響 方法的概念: 簡單的說方法就是完成特定功能的代碼塊 使用方法的好處: 降低程序的冗余度 , 便於後期維護 , 提高封裝性 方法的定義格式修飾符 返回值類型 方法名(數據類型 參數名1,數據類型 參數名2,.

javanative方法的使用

cat 語言 pub jvm 配置 his fde 應用程序 nic native關鍵字說明其修飾的方法是一個原生態方法,方法對應的實現不是在當前文件,而是在用其他語言(如C和C++)實現的文件中。Java語言本身不能對操作系統底層進行訪問和操作,但是可以通過JNI接口調用

Java通過方法創建一個http連接並請求

servlet 讀取 mage equals contex method ade temp password 1.Java代碼創建一個連接並請求該連接返回的數據 doGet()方法,execute()方法中調用 package demo2.x.com;

Javaequals和==的差別

class post 類型 內容 bsp nbsp char ole bool 1、基本數據類型(也稱原始數據類型):byte,short,char,int,long,float,double,boolean,他們之間的比較,應用雙等號(==),比較的是他們的值。