如果你执行:
System.out.println(someObj.toString());
Run Code Online (Sandbox Code Playgroud)
你可能看到输出像
someObjectClassname @ hashcodenumber
我的问题:有什么特定的原因可以显示hashCode编号吗?
我正在使用IntelliJ IDEA 8来调试某些Java,但这个问题可能适用于所有Java调试器.在变量列表中,它们显示为:
myVariable = {some.package.SomeClass@12345}
我很想知道课程名称后面的数字.这个数字究竟是多少?如果两个变量是被引用的相同底层对象,那么它们是否具有相同的数字?
提前致谢.
在 JShell 中,如果我这样做:
interface Foo { String foo(); }
(Foo) () -> "hi"
Run Code Online (Sandbox Code Playgroud)
我明白了
| created interface Foo
$2 ==> $Lambda$15/0x00000008000a9440@32e6e9c3
Run Code Online (Sandbox Code Playgroud)
通过以下研究,我知道以下内容:
$Lambda = 对生成的字节码的内存中引用,而不是由匿名内部类 (AIC) 持久保存到磁盘的引用
$15 = AIC 的对象引用
@32e6e9c3 =创建的对象的序列号——至少在 IntelliJ 中
但是(斜线)表示什么/,如/0x00000008000a9440?