两个对象值相同(x.equals(y) == true),那么有相同的hash code??这句话对嘛?为啥啊? 不一定,有可能对象只是重写了equals方法而没有重写hashCode方法。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果b_Object.a_Object.equals(b_Object)则a_Object.hashCode()==b_Object.hashCode()但是a_Object.hashCode()==b_Object.hashCode()却不能说明b_Object.a_Object.equals(b_Object)原因是因为Object的equals方法比较的是两个对象的引用 public boolean equals(Object obj) {return (this == obj); }而hashCode是根据一定算法计算出来的一个int类型的数值,这个算法不管如何精确,因为返回的是一个整数出现相同的结果,但是是不同的对象的情况肯定有的。打个比方,假设int类型的最大值是65535,如果你有65536个实例,怎么都有两个是相同的hashCode,不同的对象的。 两个对象值相同(x.equals(y) == true),那么有相同的hashcode??这句话对嘛?-------不对Integer i1=new Integer(1);Integer i2=new Integer(2);i1.equals(i2);//truei1.hashCode()==i2.hashCode();//false 注:上面所说的是在没有重载hashCode()和equals()方法的前提下 Integer i1=new Integer(1);Integer i2=new Integer(1);i1.equals(i2);//truei1.hashCode()==i2.hashCode();//false To jFresH_MaN(TM) 上面的例子中 i1.hashCode()==i2.hashCode();应该是true啊。 看毕老师的视频看到单例设计模式,有个问题 socket可以当参数传递吗? 关于学习java的疑问 Help me! 二分查找中的一点问题 接口是怎样现实多继承的? 请问大家这个语句是什么意思 谢谢! System.out.println(new String(buf, 0, len)); 高手帮我运行这个APPLET!不能运行!!!! 怎么把字符串1,000,000.00转换成double型 如何使用getLeading设置字体的行间距 形如\u00a5的unicode 无法正常显示 程序中import.*引入的是哪个包?C:\j2sdk1.4\jre还是C:\j2sdk1.4\lib
b_Object.a_Object.equals(b_Object)
则
a_Object.hashCode()==b_Object.hashCode()但是
a_Object.hashCode()==b_Object.hashCode()
却不能说明
b_Object.a_Object.equals(b_Object)原因是因为Object的equals方法比较的是两个对象的引用
public boolean equals(Object obj) {
return (this == obj);
}
而hashCode是根据一定算法计算出来的一个int类型的数值,这个算法不管如何精确,因为返回的是一个整数出现相同的结果,但是是不同的对象的情况肯定有的。打个比方,假设int类型的最大值是65535,如果你有65536个实例,怎么都有两个是相同的hashCode,不同的对象的。
-------
不对Integer i1=new Integer(1);
Integer i2=new Integer(2);
i1.equals(i2);//true
i1.hashCode()==i2.hashCode();//false
Integer i2=new Integer(1);
i1.equals(i2);//true
i1.hashCode()==i2.hashCode();//false