当前位置:编程学习 > JAVA >>

关于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 ,  非技术区
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,