社区
Java SE
帖子详情
java中值相同,hashcode一定相同吗??
nujiah001
2010-04-06 09:52:49
java中值相同,hashcode一定相同吗??
...全文
694
4
打赏
收藏
java中值相同,hashcode一定相同吗??
java中值相同,hashcode一定相同吗??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dhysf
2010-04-07
打赏
举报
回复
java对象中值相同的话,hashCode
不一定相同
的
davis_rly
2010-04-06
打赏
举报
回复
1
java对象中值相同的话,hashCode不一定相同的,但是也有相同的。比如String类的hashCode如果两个String字面值一样,那么hashCode一定是相同的,因为String类重写了hashCode()方法
对于hashCode()方法的重写规则,最好需要遵守额规则是:如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
希望明白 嘿嘿 刚刚通过了SCJP
focusforce
2010-04-06
打赏
举报
回复
Object
public int hashCode()返回该对象的哈希码值。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。
hashCode 的常规协定是:
在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。
实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)
o笨笨猪o
2010-04-06
打赏
举报
回复
原则上equals()返回true,那么hashCode()也要相等。
“
Java
有值传递和引用传递”为什么错了?
前言 初学
Java
的时候,老师在课堂上说“
Java
有值传递和引用传递”,但网上“
Java
只有值传递”的呼声很高。 本人在查找资料的过程中,在这两个说法之间反复横跳。经过本人的整理后,其实还真的是
Java
只有值传递。 什么是值传递?什么是引用传递? 首先,我们先明确一下值传递和引用传递的定义(来自维基百科)。 值传递 When a parameter is passed by value, the...
Java
中Object中的方法(equals和
hashCode
)
Object类的方法
为什么重写equals方法,还必须要重写
hashcode
方法,重写equals()和
hashCode
()方法实例
但是两个equals值相等,
hashCode
一定
相等。两个值
hashCode
值相等,这两不
一定
相等。alt+insert可以生成两个方法,依次改动。重写equals必需重写
hashCode
。
JAVA
中值
类型和引用类型的不同
[定义] 引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值,那么调用这个方法是传入的变量的值也将改变. 值类型表示复制一个当前变量传给方法,当你在这个方法中改变这个变量的值时,最初生命的变量的值不会变. 通俗说法: 值类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现。----(摘自网上)
Java
基础面试题(更新ing)
1、JDK和JRE有什么区别 ? JDK(
Java
Development Kit)是
Java
的开发工具,它不仅提供了
Java
程序运行所需要的JRE,还提供了一系列的编译、运行等工具,如
Java
c、
Java
、
Java
w等; JRE(
Java
Run Environment )是
Java
运行环境,它最核心的内容就是JVM(
Java
虚拟机)及核心类库; 2、 == 和 equals 的区别是什么 ?
java
中值
类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存
Java SE
62,624
社区成员
307,283
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章