内存地址和Java HashCode的区别是什么


即使有两个值相同的不同字符串,它们也会有相同的哈希代码。在下面的示例中,HashCode是否相同?但是内存地址是一样的?我怎样才能用java语言获得它

jshell>var a=新字符串("Ranga"(

a===>"Ranga">

jshell>var b=新字符串("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并不需要这种实现技术™编程语言。(

相关内容

最新更新