Java 中 == 和 equals 区别是什么?

2021-04-09 11:12:47 浏览数 (2313)

Java 大家都不陌生,那么你了解 ​==​ 和 ​equals​ 两者的差别嘛?本篇文章告诉你

== ​是 Java 的一种操作符,有两种比较方式

对基本数据类型来说,​== ​的判断是两边值是否相等

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());

    }
}

而对于引用类型来说,​==​ 判断是两边引号是否相等,就是两个对象是否都指向同一个内存区域

private void equals(){

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

equals​ 是 Java 中任何对象的父类,就是 Object 类定义的方法。​equals ​只能进行对象比较,表示的是引用双方值是否为相等。这里要记住,不是说 ​==​ 比较的就是引用是否相等,​equals ​比较的是值,需要区分来说。

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 区别是什么? 的全部内容