先看个程序
打印
很多人有自己对 对象直接关于 ==比较的看法
但我在这说自己发现的一些东西
这里的两个对象 但他的方法 equals是永远返回true的
但hashcode也是返回一样的数 也就是说这是hashcode也是相等的
但他们比较后(==)却不相等....
说明==和 hashcode和equals没有关系.....
他其实就是比较的在内存的地址 (String 在常量池中是相等的两个对象 还有-127-128范围内的Integer对象也是相等的)
和其余的都没关系
package com.test.one;
public class one {
private String name;
private int id;
@Override
public int hashCode()
{
System.out.println("#");
return 1;
}//重写hashcode/.....
public boolean equals(one o)
{
if(o.name.equals(name)&&o.id==id)
{
return true;
}
return true;
}
public static void main(String[]args){
one o1=new one();
one o2=new one();
o1.id=1;
o2.id=2;
o1.name="o1";
o2.name="o2";
System.out.println(o1==o2);
System.out.println(o1.toString());
System.out.println(o1.equals(o2));
}
}
打印
false
#
com.test.one.one@1
true
很多人有自己对 对象直接关于 ==比较的看法
但我在这说自己发现的一些东西
这里的两个对象 但他的方法 equals是永远返回true的
但hashcode也是返回一样的数 也就是说这是hashcode也是相等的
但他们比较后(==)却不相等....
说明==和 hashcode和equals没有关系.....
他其实就是比较的在内存的地址 (String 在常量池中是相等的两个对象 还有-127-128范围内的Integer对象也是相等的)
和其余的都没关系