内存地址和Java HashCode [duplicate]有什么区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存地址和Java HashCode [duplicate]有什么区别相关的知识,希望对你有一定的参考价值。
即使您有两个具有相同值的不同字符串,它们也将具有相同的哈希码。在下面的示例中,HashCode是相同的吗?但是内存地址是一样的吗?我如何在Java中获得它。
jshell> var a = new String(“ Ranga”)a ==>“范围”
jshell> var b =新的String(“ Ranga”)
b ==>“ Ranga”
jshell> a.hashCode()
$ 31 ==> 78727449
jshell> b.hashCode()
$ 32 ==> 78727449
jshell> a == b
$ 33 ==>假
答案
如果要在更改字符串之前查看字符串的原始hashCode,可以执行以下操作:String foo = ...some string
System.out.println(System.identityHashCode(foo));
根据hashCode
的文档在合理可行的范围内,由Object类定义的hashCode方法确实为不同的对象返回不同的整数。 (通常通过将对象的内部地址转换为整数来实现,但是Java™编程语言不需要此实现技术。)
以上是关于内存地址和Java HashCode [duplicate]有什么区别的主要内容,如果未能解决你的问题,请参考以下文章
java中“==”和equals()以及hashCode()的理解
java中“==”和equals()以及hashCode()的理解