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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄陂酷歌 中级黑马   /  2014-3-8 16:02  /  1229 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

hashcode是什么意思?是不是相当于一个对象的代号?

5 个回复

正序浏览
用最简单的方法来说,hashcode就是一个签名。当两个对象的hashcode一样时,两个对象就有可能一样。如果不一样的话两个对象就肯定不一样。
一般用hashcode来进行比较两个东西是不是一样的,可以很容易的排除许多不一样的东西。
最常用的地方就是在一堆东西里找一个东西。先用你要找的东西的hashcode和所有东西的hashcode比较,如果不一样的话就肯定不是你要找的东西。如果一样的话就很可能是你要找的东西。然后再进行仔细的比较两个东西是不是真的一模一样。

//一个不能加重复内容的容器
class Set {
Object[] objs = new Object[10]; //装东西的的数组
int size = 0; //已经有几个东西 ...

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
hashcode是一种编码方式,在Java中,每个对象都会有一个hashcode(是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值),Java可以通过这个hashcode来识别一个对象。
有一个概念要牢记,两个相等对象的equals方法一定为true, 但两个hashcode相等的对象不一定是相等的对象。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
Hashcode的作用:提高查找对象的效率 分区域存储 先计算对象的Hashcode值 然后再去相应的区域查找。(前提是存在Hash集合)所以eqauls对象相等,Hashcode值必须相等。
回复 使用道具 举报
hashcode方法返回该对象的哈希码值,该方法为数据存储的时候提供一些优点:
1、hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;
2、如果两个对象相同,就是适用于equals(java.lang.Object) 方法,那么这两个对象的hashCode一定要相同;
3、如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;
4、两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里”。例如:

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
hashCode()方法就是返回对象的哈希码。然后根据这个哈希码在内存中存储。当用equals()方法比较两个对象相等时,这两个对象也应该返回相等的hashCode.hashCode是标识一个对象,每个对象都有一个唯一的hashCode。可以打印出来看看
Person p = new Person();
System.out.println(p);

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

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