==和equals的区别

首先“==”是运算符,比较的是两个对象的地址,equals是Object类的方法,可以比较地址也可以比较内容。

作用:在使用类中,如果没有重写equals方法,那么equals方法和==的作用就是相同的,因为Object类中的equals方法的实现原理就是使用==来实现的。如果需要比较两个对象的内容,就需要写equals方法。

  • 使用“==”操作符检查“参数是否为这个对象的引用”
  • 使用instanceof操作符检查“参数是否为正确的类型”
  • 对于类中的关键属性,检查参数传入对象的属性是否与之相匹配
  • 编写完equals方法后,问自己它是否满足对称性、传递性、一致性
  • 不要将equals方法参数中的Object对象替换为其他的类型,在重写时不要忘掉@Override注解

重写equals方法方法需要遵守以下约定:

  • 自反性(x.equals(x)必须返回true)
  • 对称性(x.equals(y)返回true时,y.equals(x)也必须返回true)
  • 传递性(x.equals(y)和y.equals(z)都返回true时,x.equals(z)也必须返回true)
  • 一致性(当x和y引用的对象信息没有被修改时,多次调用x.equals(y)应该得到同样的返回值)
  • 非空性(对于任何非null值的引用x,x.equals(null)必须返回false)

 

posted @ 2020-05-07 11:01  马宇欣  阅读(342)  评论(0编辑  收藏  举报