内存地址和Java HashCode [duplicate]有什么区别

问题描述 投票:-4回答:1
即使您有两个具有相同值的不同字符串,它们也将具有相同的哈希码。在下面的示例中,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 ==>假

java string memory-address
1个回答
1
投票
如果要在更改字符串之前查看字符串的原始hashCode,可以执行以下操作:

String foo = ...some string System.out.println(System.identityHashCode(foo));

根据hashCode的文档

在合理可行的范围内,由Object类定义的hashCode方法确实为不同的对象返回不同的整数。 (通常通过将对象的内部地址转换为整数来实现,但是Java™编程语言不需要此实现技术。)
© www.soinside.com 2019 - 2024. All rights reserved.