"equals"和“==”的区别

equals比较的也是地址,但是在使用时,它一般都是经过重写equals()方法的,从而是对“值”进行比较的

Java语言对equals()的要求如下,这些要求是必须遵循的:
  对称性:如果x.equals(y)返回是“true”,那么y.equals(x)也应该返回是“true”。
  反射性:x.equals(x)必须返回是“true”。
  类推性:如果x.equals(y)返回是“true”,而且y.equals(z)返回是“true”,那么z.equals(x)也应该返回是“true”。
  一致性:如果x.equals(y)返回是“true”,只要x和y内容一直不变,不管你重复x.equals(y)多少次,返回都是“true”。
  任何情况下,x.equals(null),永远返回是“false”;x.equals(和x不同类型的对象)永远返回是“false”。
  以上这五点是重写equals()方法时,必须遵守的准则,如果违反会出现意想不到的结果,请大家一定要遵守

  hashCode方法默认返回对象的地址,String,Integer等封装类型对它进行了重写返回一个整数
  该整数的取值来自于当前字符串的每个字母的编码值.公示如下
  public int hashCode(){
    return “abcde”.hashCode();
  }

"=="比较的是地址,

原文地址:https://www.cnblogs.com/xinchen01/p/10969238.html