- == 是 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.getAge() == person2.getAge());
System.out.println(person1.getName().equals(person2.getName()));
}
public static void main(String[] args) {
new DoubleCompareAndEquals().doubleCompare();
}
}
- equals()方法
equals 是 Java 中所有对象的父类,即 Object 类定义的一个方法。它只能比较对象,它表示的是引用双方的值是否相等。
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。