App下載

Java 中 == 和 equals 區(qū)別是什么?

猿友 2021-04-09 11:12:47 瀏覽數(shù) (2403)
反饋

Java 大家都不陌生,那么你了解 ?==? 和 ?equals? 兩者的差別嘛?本篇文章告訴你

?== ?是 Java 的一種操作符,有兩種比較方式

對基本數(shù)據(jù)類型來說,?== ?的判斷是兩邊值是否相等

public class DoubleCompareAndEquals {

    Person person1 = new Person(24,"boy");
    Person person2 = new Person(24,"girl");
    int c = 10;

    private void doubleCompare(){

        int a = 10;
        int b = 10;

        System.out.println(a == b);
        System.out.println(a == c);
        System.out.println(person1.getId() == person2.getId());

    }
}

而對于引用類型來說,?==? 判斷是兩邊引號是否相等,就是兩個對象是否都指向同一個內(nèi)存區(qū)域

private void equals(){

  System.out.println(person1.getName().equals(person2.getName()));
}

?equals? 是 Java 中任何對象的父類,就是 Object 類定義的方法。?equals ?只能進行對象比較,表示的是引用雙方值是否為相等。這里要記住,不是說 ?==? 比較的就是引用是否相等,?equals ?比較的是值,需要區(qū)分來說。

?equals? 作對象間的比較有以下特性

  • ?自反性?:對任何非空引用(x)來說,x.equals(x) 會返回 true
  • ?對稱性?:對任何非空引用(x)和(y)來說,如果 x.equals(y)是 true,則 y.equals(x) 也為 true
  • ?傳遞性?:對任何非空引用值來說,有三個值:x、y 和 z,如果 x.equals(y) 返回 true,y.equals(z) 返回 true,那么 x.equals(z) 也應該返回 true。
  • ?一致性?:對任何非空引用 x 和 y 來說,如果 x.equals(y) 相等的話,那么它們必須始終相等。
  • ?非空性?:對任何非空引用的值 x 來說,x.equals(null) 必須返回 false。

以上就是小編為你整理的關于Java 中 == 和 equals 區(qū)別是什么? 的全部內(nèi)容


0 人點贊