A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 caobin 于 2014-12-2 14:44 编辑

如例子,复写的时候如果不在name后面调用hashCode方法就会报String 无法转换为int?为什么是String无法转换为int呢?突然明白了,原来我定义这个方法的返回值是int,但是调用的方法hashCode是怎么将String转成Int的?

class Person
{
        private String name;
        private int age;
        public Person(String name,int age)
        {
                this.name = name;
                this.age = age;
        }
        public String getName()
        {
                return name;
        }
        public int getAge()
        {
                return age;
        }
        public int hashCode()
        {
                return name.hashCode()+age;
        }
        public boolean equals(Object obj)
        {
                if(!(obj instanceof Person))
                return false;
                Person p = (Person)obj;
                return this.name.equals(p.name)&&this.age==p.age;
        }
}


评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

2 个回复

倒序浏览
  1.     public int hashCode() {
  2.         int h = hash;
  3.         if (h == 0 && value.length > 0) {
  4.             char val[] = value;

  5.             for (int i = 0; i < value.length; i++) {
  6.                 h = 31 * h + val[i];
  7.             }
  8.             hash = h;
  9.         }
  10.         return h;
  11.     }
复制代码


这是String的hashcode方法,它和对象的值有关。

点评

嗯,知道啦~~  发表于 2014-12-2 15:02

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报 2 0
您需要登录后才可以回帖 登录 | 加入黑马