我们是否可以直接或间接访问Java中的内存位置?
如果我们尝试打印对象,它将打印哈希码.hashcode是否间接表示内存位置?
对于不同内存位置的两个对象,但它们的哈希码仍然可以变化.
-Abhishek
不,哈希码通常与内存位置无关.对象的内存位置是对象的引用本身.
但是,挤出实际位置可能并非完全不可能.Object
根据其javadoc,Java 的哈希码通常通过将对象的内部地址转换为整数来实现,但Java编程语言不需要这种实现技术.并且有System#identityHashCode(Object)
方法,它将返回给定对象的相同哈希码,就像默认方法hashCode()(即Object
hashCode())返回的那样.所以这样你就可以获得实际的内存位置.但是,如上所述,这是否有效依赖于实现.而且,即使您知道位置,您肯定无法直接读取/写入内存,您会对该信息做些什么?