关于Long类型数据判等的问题
package test;public class Equ {
public static void main(String args[]){
Long la = 20L;
Long lb = 20L;
Long lc = 1000L;
Long ld = 1000L;
if(la == lb){
System.out.println("Equal");
}else
System.out.println("Not Equal");
if(lc == ld){
System.out.println("Equal");
}else
System.out.println("Not Equal");
}
}
在以上程序中会出现,Equal和Not Equal的结果。不知道是什么原因,期待大侠的回答, 谢谢。
PS:经试验,Long整型的直接判等,只支持0-127之间的数值,而基本数据类型的long却没有限制。 --------------------编程问答-------------------- 看源码,-128~127
private static class LongCache {--------------------编程问答-------------------- 谢谢,大侠!
private LongCache(){}
static final Long cache[] = new Long[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Long(i - 128);
}
}
public static Long valueOf(long l) {
final int offset = 128;
if (l >= -128 && l <= 127) { // will cache
return LongCache.cache[(int)l + offset];
}
return new Long(l);
}
补充:Java , 非技术区