求java高手解释一下Integer的等于判断,本人学习java也有一定水平,实在费解
Integer c = 3;
Integer d = 3;
Integer e = 321;
Integer f = 321;
System.out.println(c == d);
System.out.println(e == f);
输出 true false
------解决方案--------------------
static final Integer cache[] = new Integer[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
}
这是源码中的,也就是说cache中已有-128到127,不在这范围的会新new ,这时可以理解比较是内存地址,也就是是不是同一对象,并不是比较hashCode,hashcode相同对象不一样相同,毕竟hashcode是int大小是有限的,看来lz的==,equal,hashcode什么的还有待提高哈。。
------解决方案--------------------