国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

淺談java自定義中類兩個對象的比較

這篇具有很好參考價值的文章主要介紹了淺談java自定義中類兩個對象的比較。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

淺談java自定義中類兩個對象的比較,學習筆記,java,開發(fā)語言,學習,學習方法,程序人生,intellij-idea

目錄

實現(xiàn)比較兩個對象是否相同

1.前置代碼

1.學生類

2.示例?

3.輸出?

4.原因

2.那么我們要怎么做呢?

1.對Student類中重新實現(xiàn)quals方法(即對equals方法重寫)?

2.完整代碼如下:

3.具體操作

4.演示

1.示例

2.輸出

3.原因?

實現(xiàn)比較兩個對象的大小?

第一種: 用接口的方式實現(xiàn),實現(xiàn)一個Comparable接口,并指定比較的類型

1.演示代碼

2.示例?

3.代碼輸出結果

第二種: 使用比較器(博主推薦使用!!!)

1.演示代碼

(1)名字比較器

(2)年齡比較器

2.示例

3.代碼輸出結果

完結撒花??ヽ(°▽°)ノ?


實現(xiàn)比較兩個對象是否相同

1.前置代碼

1.學生類

class Student{
    String name;
    int age;
    public Student(String name,int age){
        this.name=name;
        this.age=age;
    }
} 

2.示例?

  Student student1 = new Student("fly",19);
  Student student2 = new Student("fly",19);
  System.out.println(student2==student1);

3.輸出?

輸出: false ==//默認比較的是兩個引用的地址

4.原因

原因:所有類默認繼承于object,所以student1調用的是object的equals
? equals的源碼

public boolean equals(Object obj) {
    return (this == obj);
}

obj:obj是參數(shù)
this:隨調equals誰是this
return (this == obj);
等價于return students1 == students2

2.那么我們要怎么做呢?


1.對Student類中重新實現(xiàn)quals方法(即對equals方法重寫)?

	//對equals方法進行重寫(即自定義的equals方法)
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }
    //實現(xiàn)了比較時當年齡和名字相同的情況下,認為是同一個對象

2.完整代碼如下:

class Student{
    String name;
    int age;
    public Student(String name,int age){
        this.name=name;
        this.age=age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }
}

3.具體操作

在IDEA右鍵generate(快捷鍵:Alt+Insert),
再選擇equals() and hashCode(),一路next就ok了

4.演示

1.示例

?System.out.println(student1.equals(student2));

2.輸出

輸出:true

3.原因?

當代碼運行的時候,就會使用自定義的equals方法
實現(xiàn)了比較時當兩個對象年齡和名字相同的情況下,會被認為是同一個對象


實現(xiàn)比較兩個對象的大小?

第一種: 用接口的方式實現(xiàn),實現(xiàn)一個Comparable接口,并指定比較的類型

1.演示代碼

class Student implements Comparable<Student>{
   String name;
   int age;
   public Student(String name,int age){
       this.name=name;
       this.age=age;
   }
   @Override
   public int compareTo(Student o) {
       return this.age-o.age;
   }
}

2.示例?

 	Student student1 = new Student("初一",19)
    Student student2 = new Student("初三",21);
    System.out.println(student1.equals(student2));//輸出: -2
    System.out.println(student1.compareTo(student2));//輸出: 2
    Student student3 = new Student("初五",19);
    System.out.println(student1.compareTo(student3));//輸出: 0

3.代碼輸出結果

淺談java自定義中類兩個對象的比較,學習筆記,java,開發(fā)語言,學習,學習方法,程序人生,intellij-idea

第二種: 使用比較器(博主推薦使用!!!)

1.演示代碼

(1)名字比較器
class NameComparator implements Comparator<Student> {
    @Override
    public int compare(Student o1, Student o2) {
        return o1.name.compareTo(o2.name);
    }
}
(2)年齡比較器
class AgeComparator implements Comparator<Student> {
    @Override
    public int compare(Student o1, Student o2) {
        return o1.age-(o2.age);
    }
}

2.示例

    Student student1 = new Student("初一",19);
    Student student2 = new Student("初三",21);
    Student student3 = new Student("初一",21);
    NameComparator nameComparator = new NameComparator();
    int retName = nameComparator.compare(student1, student3);
    System.out.println(retName);//輸出: 0
    AgeComparator ageComparator = new AgeComparator();
    int retAge=ageComparator.compare(student2,student3);
    System.out.println(retAge);//輸出: 0
    System.out.println(ageComparator.compare(student1, student3));//輸出: -2
    System.out.println(ageComparator.compare(student3, student1));//輸出: 2

3.代碼輸出結果

淺談java自定義中類兩個對象的比較,學習筆記,java,開發(fā)語言,學習,學習方法,程序人生,intellij-idea文章來源地址http://www.zghlxwxcb.cn/news/detail-709429.html

完結撒花??ヽ(°▽°)ノ?

到了這里,關于淺談java自定義中類兩個對象的比較的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 重寫 equals 方法,實現(xiàn)比較兩個對象值是否相等

    == 用于比較值的引用地址是否一致,而 equals 用于比較值的內容是否一致,下面我們來比較一下這兩個值是否相同 可以發(fā)現(xiàn)它的值是相同的 下面我們來對兩個對象的值進行比較 可以發(fā)現(xiàn)值的內容確實相同,但比較的結果是 false 其實在 object 中的 equals 底層使用的還是 == 進行

    2024年02月07日
    瀏覽(96)
  • Linux shell編程學習筆記44:編寫一個腳本,將md5sum命令執(zhí)行結果保存到變量中,進而比較兩個文件內容是否相同

    Linux shell編程學習筆記44:編寫一個腳本,將md5sum命令執(zhí)行結果保存到變量中,進而比較兩個文件內容是否相同

    在? Linux shell編程學習筆記42:md5sum https://blog.csdn.net/Purpleendurer/article/details/137125672?spm=1001.2014.3001.5501 中,我們提到編寫一個在Linux系統(tǒng)下比較兩個文件內容是否相同的腳本。 基本思路是: 其中有兩個難點: 1.文件的md5值的獲取 2.md5值的比較 對于第1個難點,我們的解決辦法是

    2024年04月10日
    瀏覽(28)
  • Kubernetes學習筆記-kubernetes應用擴展(1)-自定義API對象20230622

    Kubernetes學習筆記-kubernetes應用擴展(1)-自定義API對象20230622

    1、CustomResourceDefinitions介紹 開發(fā)者只需要只需向kubernetes api服務器提交CRD對象,即可定義新的資源類型。成功提交CRD之后,就能通過API服務器提交JSON清單或者YAML清單的方式創(chuàng)建自定義資源,以及其他kubernetes資源實例 創(chuàng)建一個CRD對象 website-crd.yaml apiVersion:apiextensions.k8s.io/v1

    2024年02月10日
    瀏覽(36)
  • Java如何比較兩個日期的先后順序

    在 Java 中,你可以使用 `java.util.Date` 或 `java.time.LocalDate` 類來比較兩個日期的先后順序。 以下是使用 `java.util.Date` 類比較兩個日期的先后順序的示例代碼: ```java import java.util.Date; public class DateComparisonExample { ? ? public static void main(String[] args) { ? ? ? ? Date date1 = new Date(); // 第

    2024年02月13日
    瀏覽(28)
  • java 兩個list比較,刪除相同的元素

    java 兩個list比較,刪除相同的元素

    概述 在Java開發(fā)中,經常需要比較兩個List并刪除相同的元素。本文將介紹整個流程,并提供相應的代碼示例,幫助新手開發(fā)者完成這個任務。 流程 下面是比較兩個List并刪除相同元素的流程: 代碼示例 創(chuàng)建兩個List 我們首先需要創(chuàng)建兩個List對象,分別代表待比較的兩個列表

    2024年02月07日
    瀏覽(28)
  • 【C++】STL 算法 ⑧ ( 預定義函數(shù)對象 | 預定義函數(shù)對象組成 | 預定義函數(shù)對象分類 | 預定義 算術運算符 函數(shù)對象 | 預定義 比較運算符 函數(shù)對象 | 預定義 邏輯運算符 函數(shù)對象 )

    【C++】STL 算法 ⑧ ( 預定義函數(shù)對象 | 預定義函數(shù)對象組成 | 預定義函數(shù)對象分類 | 預定義 算術運算符 函數(shù)對象 | 預定義 比較運算符 函數(shù)對象 | 預定義 邏輯運算符 函數(shù)對象 )

    C++ 的 標準模板庫 ( STL , Standard Template Library ) 中 , 預定義了一系列的 \\\" 函數(shù)對象 “ , 又稱為 ” 仿函數(shù) Functors \\\" ; 這些 \\\" 預定義函數(shù)對象 \\\" 在 STL 算法中 , 可以 作為 算法的參數(shù) , 定制某些參數(shù)的行為 , 如 : for_each 遍歷算法中 , 傳入 \\\" 一元函數(shù)對象 \\\" , 用于執(zhí)行單個元素的遍歷

    2024年01月16日
    瀏覽(58)
  • 學習C++:C++進階(六)如何在C++代碼中調用python類,實例化python中類的對象,如何將conda中的深度學習環(huán)境導入C++項目中

    目錄 1.應用場景 2.場景:利用maskrcnn深度學習網絡實現(xiàn)語義分割 3.CMake配置python解釋器

    2023年04月22日
    瀏覽(22)
  • Java學習筆記(三):面向對象

    類(class)和對象(object, 也被稱為實例 instance)是 java面向對象的核心,可以把類理解成某種概念,對象理解為一個具體存在的實體。也就是說,日常說的人,其實都是人的實例,而不是人類。 定義類的簡單語法: 修飾符可以是 public、final、abstract,或者完全省略。 對一個類而

    2024年02月11日
    瀏覽(22)
  • Java面向對象學習筆記-3

    本文將介紹Java編程中的一些基本概念和用法,包括類、接口、抽象類、繼承、多態(tài)和組合等。通過代碼示例,我們將深入探討這些概念,幫助讀者更好地理解如何使用Java進行面向對象編程。 Java面向對象學習筆記-1 Java面向對象學習筆記-2 我們首先來看紙張和墨盒類,它們是

    2024年02月09日
    瀏覽(22)
  • Java面向對象學習筆記-4

    當編寫Java程序時,了解如何處理異常是至關重要的。異常處理可以幫助我們在程序執(zhí)行過程中處理各種錯誤情況,以確保程序能夠正常運行或者 graceful 地退出。本文將介紹一些關于Java異常處理的基本概念和最佳實踐,包括自定義異常類、用戶輸入的處理、異常捕獲與處理、

    2024年02月09日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包