"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();
}
"=="比较的是地址,