关于hashcode()方法的疑问

a35741 2010-04-23 09:44:35
class test1 {
private String name;
private int age;
public boolean equals(Object obj)
{
if (obj instanceof test1)
{
test1 objtemp = (test1) obj;
if (name.equals(objtemp.name) && age == objtemp.age)
{
return true;
}
else {
return false;
}
}
else
{
return false;
}
}
public int hashCode()
{
return name.hashCode() + age;
}
}

只是个hashmap的东西
equals的方法好不容易理解明白了
...但是这个hashcode方法到底返回的是一个什么东西...
这个hashcode方法到底是什么时候被调用的?
...全文
85 5 打赏 收藏 转发到动态 举报
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
a35741 2010-04-23
  • 打赏
  • 举报
回复
谢谢各位...已经理解..结贴写笔记
mochibing 2010-04-23
  • 打赏
  • 举报
回复
Object类里面的hashCode方法是native(本地)的,该方法返回的是一个int类型的整数,这个整数的就相当于对象的身份证编号一样。这个方法是用native修饰的,native表示该方法是采用非java语言实现的。当native方法被调用的时候,jvm就会加载相关的外部程序代码(例如dll),这是通过java.system.loadLibrary()方法实现的。
定义native方法主要是用来定义java程序与外部非java程序进行交互的接口
a35741 2010-04-23
  • 打赏
  • 举报
回复
就是说hashcode是交给hashmap内部处理的...?..
基本上自己用不上这个hashcode~?
fengboxjtu556 2010-04-23
  • 打赏
  • 举报
回复
楼上正解
wakeUpDoNottLazy 2010-04-23
  • 打赏
  • 举报
回复
1:当你将某个对对象放入 HashMap 中时,HashMap 在其内部会通过这个方法获取该对象的 hashcode 。
2:在重写 equals 方法时,应该考虑 hashcode 的返回值,如果 equals 方法返回 ture 那么,进行比较的两个对象的 hashcode 方法返回的值应该是一致的。
相关推荐

62,568

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告