你真的会 Java 吗?(二)

1 · Johnson Lee · Oct. 17, 2021, midnight
是个 Java/Android 工程师都知道,用 == 比较其实是比较的两个对象是否是同一个实例,比较实例其实就是比较内存地址是否相等,当我们在打印一个 Object 的时候,默认就会输出 [email protected] 这样的字符串, @ 后面的这一串,则是 Object 实例在内存中的地址。众所周知,由于 JVM 的垃圾回收机制,会导致实例在运行时内存中的位置被垃圾回收器移动,那么问题来了,当实例被移动位置后, Object 的 hashCode() 会变吗? Hash Code 不会变 首先,我们来看 Javadoc 中对于 Object.hashCode() 的注释说明: The general contract of hashCode is: Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer , ...