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方法到底是什么时候被调用的?

解决方案 »

  1.   

    1:当你将某个对对象放入 HashMap 中时,HashMap 在其内部会通过这个方法获取该对象的 hashcode 。
    2:在重写 equals 方法时,应该考虑 hashcode 的返回值,如果 equals 方法返回 ture 那么,进行比较的两个对象的 hashcode 方法返回的值应该是一致的。
      

  2.   

    就是说hashcode是交给hashmap内部处理的...?..
    基本上自己用不上这个hashcode~?
      

  3.   

      Object类里面的hashCode方法是native(本地)的,该方法返回的是一个int类型的整数,这个整数的就相当于对象的身份证编号一样。这个方法是用native修饰的,native表示该方法是采用非java语言实现的。当native方法被调用的时候,jvm就会加载相关的外部程序代码(例如dll),这是通过java.system.loadLibrary()方法实现的。
      定义native方法主要是用来定义java程序与外部非java程序进行交互的接口