日期:2014-05-20  浏览次数:20679 次

hashCode
两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 有说对的,有说不对的,求解释

------解决方案--------------------
可以不同,但最好相同。
------解决方案--------------------
hashcode表示存放该对象的内存地址。
举个例子:
User u  =  new User ("a",12);
User u1  =  new User ("a",12);
这两行代码创建了两个不同的对象u 和 u1,它们的值一样,但是它们引用的是不同的内存地址,互不关联。所以u==u1 返回的是false 
如果:
User u  =  new User ("a",12);
User u1  =  u;
两行代码虽然也是创建了两个对象 u和u1 ,但是u把它的引用传递给了u1 ,所以它们两个对象是一样的,u==u1返回的是true ,既然是同一个引用,如果修改u的name,那么u1的name也会跟这变。。试试就知道了