亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳細講解Java中==與equals的區(qū)別對比

 更新時間:2023年09月04日 08:41:37   作者:cool_boy  
這篇文章主要為大家詳細介紹了Java中==與equals的區(qū)別對比,文中有詳細的代碼示例供大家參考,具有一定的參考價值,感興趣的同學可以參考閱讀下

java == 與 equals 的對比

== 是一比較運算符

  • 既可以判斷基本類型,又可以判斷引用類型。
  • 如果判斷基本類型,判斷的是值是否相等。
   
    int x = 80;
    double y = 80.0;
    System.out.println(x==y); //true
  • 如果判斷引用類型,判斷的是地址是否相等,既判斷是不是同一個對象。
    A a = new A();
        A b = a;
        A c = b;
    System.out.println(b==c); //ture
    System.out.println(a==c); //ture
    B g = a;
    System.out.println(g==a); //ture
class B{ }
class A extends B{ }

equals 方法

  • 是Object類中的方法,只能判斷引用類型。
Object的 equals 源碼
public boolean equals(Object anObject) {
    if (this == anObject) {   //如果是同一個對象
        return true;      //返回true
    }
}   
案例
     Cat cat1 = new Cat("小花",2);
     Cat cat2 = new Cat("小花",2);
     /*
      Java Object 類是所有類的父類,也就是說 Java 的所有類都繼承了 Object,**子類可
      以使用  Object 所有方法**。
     */
     System.out.println(cat1.equals(cat2));  //false   判斷是不是同一個對象
class Cat{
    private String name;
    private int age;
    public Cat(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
  • 默認判斷的是地址是否相等,既判斷是不是同一個對象。子類中往往重寫該方法,用于判斷內容是否相等。比如( String, Integer)
//把object的equals方法重寫了,變成了比較兩個字符串值 是否相同
String類的 equals方法 源碼
if (anObject instanceof String) { //判斷類型
    String anotherString = (String)anObject; //向下轉型
    int n = value.length;
    if (n == anotherString.value.length) { //如果長度相同
        char v1[] = value;
        char v2[] = anotherString.value;
        int i = 0;
        while (n-- != 0) { //然后一個一個的比較字符
            if (v1[i] != v2[i])
                return false;
            i++;
        }
        return true; //如果兩個字符串的所有字符都相等,則返回true
    }
}
return false; //如果比較的不是字符串,則直接返回false
案例一:
        Cat cat1 = new Cat("小花",2);
        Cat cat2 = new Cat("小花",2);
        System.out.println(cat1.equals(cat2));  //true
class Cat{
    private String name;
    private int age;
    public Cat(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //這里重寫equals方法
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Cat cat = (Cat) o;
        return age == cat.age &&
                Objects.equals(name, cat.name);
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
案例二:
    String str1 = new String("好好學習");
    String str2 = new String("好好學習");
    System.out.println(str1.equals(str2)); //true
Integer 也重寫了object的 equals 方法,變成了判斷兩個值是否相同
源碼  
  public boolean equals(Object obj) {
     if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
  }
Integer integer1 = new Integer(1000);
Integer integer2 = new Integer(1000);
System.out.println(integer.equals(integer1)); //true 判斷兩個值是否相等

以上就是詳細講解Java中==與equals的區(qū)別對比的詳細內容,更多關于Java ==與equals區(qū)別的資料請關注腳本之家其它相關文章!

相關文章

  • nacos單機版啟動失敗問題以及解決

    nacos單機版啟動失敗問題以及解決

    這篇文章主要介紹了nacos單機版啟動失敗問題以及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • java實現銀行ATM管理系統(tǒng)

    java實現銀行ATM管理系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現銀行ATM管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • SpringMVC的注解@RequestMapping屬性及使用

    SpringMVC的注解@RequestMapping屬性及使用

    這篇文章主要為大家介紹了SpringMVC注解@RequestMapping屬性及使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • java生成圖片驗證碼示例程序

    java生成圖片驗證碼示例程序

    這篇文章主要介紹了java生成圖片驗證碼示例程序,大家參考使用吧
    2013-11-11
  • 簡單介紹Java垃圾回收機制

    簡單介紹Java垃圾回收機制

    這篇文章主要介紹了簡單介紹Java垃圾回收機制,涉及一些相關的Java術語,Hotspot虛擬機,jvm體系結構等內容,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • spring boot項目沒有mainClass如何實現打包運行

    spring boot項目沒有mainClass如何實現打包運行

    這篇文章主要介紹了spring boot項目沒有mainClass如何實現打包運行,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java中Velocity快速對變量中的引號特殊字符進行轉義

    Java中Velocity快速對變量中的引號特殊字符進行轉義

    Velocity是一個基于Java的模板引擎,與Freemarker類似,這篇文章主要介紹了Java中Velocity如何對變量中的引號特殊字符進行轉義,主要記錄一下在使用中碰到的要對引號特殊字符進行轉義的問題,需要的朋友可以參考下
    2023-07-07
  • Spring MVC如何設置請求頭和響應頭的Header

    Spring MVC如何設置請求頭和響應頭的Header

    這篇文章主要介紹了Spring MVC如何設置請求頭和響應頭的Header問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • mysql+spring+mybatis實現數據庫讀寫分離的代碼配置

    mysql+spring+mybatis實現數據庫讀寫分離的代碼配置

    今天小編就為大家分享一篇關于mysql+spring+mybatis實現數據庫讀寫分離的代碼配置,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Spring Boot創(chuàng)建可執(zhí)行jar包的實例教程

    Spring Boot創(chuàng)建可執(zhí)行jar包的實例教程

    這篇文章主要介紹了Spring Boot創(chuàng)建可執(zhí)行jar包的實例教程,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02

最新評論