【发布时间】:2020-03-12 18:54:11
【问题描述】:
jshell> var a = new String("Ranga")
a ==> “兰加”
jshell> var b = new String("Ranga")
b ==> “兰加”
jshell> a.hashCode()
31 美元 ==> 78727449
jshell> b.hashCode()
32 美元 ==> 78727449
jshell> a == b
$33 ==> 错误
【问题讨论】:
-
为什么?您要解决的问题或您要尝试做的事情是什么?考虑 Java 中的内存地址意味着你已经走错了路……
-
你不能访问 java 中的内存位置。就算可以,又有什么用呢?你不能使用它。
-
你应该问自己的问题是,“Java 有像 C/C++ 这样的指针吗?”然后你就可以自己回答这个问题了。
-
hashCode() != 内存位置。在当前的hotspot实现中,identityHashCode不依赖于内存位置。
-
如果您可以添加一些有用的参考链接@JohannesKuhn
标签: java string memory-address