我正在尝试一些围绕java中的对象相等的代码.正如我在某处读过的那样
hashCode()是通过应用散列函数生成的数字.散列函数对于每个对象可以是不同的,但也可以是相同的.在对象级别,它返回对象的内存地址.
现在,我有一个示例程序,我连续运行了10次.每次运行程序时,我都会获得与哈希码相同的值.
如果hashCode()函数返回对象的内存位置,那么java(JVM)如何在连续运行中将对象存储在相同的内存地址?
你能否就这个问题给我一些见解和看法?
我正在运行以测试此行为的程序如下:
public class EqualityIndex {
private int index;
public EqualityIndex(int initialIndex) {
this.index = initialIndex;
}
public static void main(String[] args) {
EqualityIndex ei = new EqualityIndex(2);
System.out.println(ei.hashCode());
}
}
Run Code Online (Sandbox Code Playgroud)
每次运行此程序时,返回的哈希码值都是4072869.
Mic*_*rdt 15
为什么java(JVM)在连续运行中将对象存储在相同的内存地址?
为什么不呢?非内核程序永远不会使用绝对内存地址,它们使用虚拟内存,每个进程都有自己的地址空间.因此,毫无疑问,确定性程序会在每次运行中将内容放置在同一位置.
| 归档时间: |
|
| 查看次数: |
4155 次 |
| 最近记录: |