我编写了这段代码,想查看我从一个类创建的2个对象的内存位置,并创建一个特定变量的实例。
public class StaticFields {
int a = 12;
int b = 235;
public static void main(String[] args) {
StaticFields obj = new StaticFields();
int a = obj.a;
StaticFields obj2 = new StaticFields();
int c = obj2.a;
System.out.println(System.identityHashCode(a));
System.out.println(System.identityHashCode(c));
}
}
为什么“ a”和“ c”的“ identityHashCode”相同?
谢谢。
答案 0 :(得分:-2)
两个整数都带有相同的值12。
由于缓存了整数(对于-128中的值,最大值为127),因此返回的两个对象的哈希码值相同。
因为b的值大于127,所以情况并非如此。