即使有两个值相同的不同字符串,它们也会有相同的哈希代码。在下面的示例中,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并不需要这种实现技术™编程语言。(