您的位置:首页 > 编程语言 > Java开发

我被Java包装类教育了(Long和Integer)

2016-02-02 00:00 330 查看
摘要: Long和Integer有点差别

在最近的开发中,我发现包装类存在一个问题

public class test {

public static void main(String[] args) {

Long l =100l;
Long l2 =100l;

System.out.println(l==l2);

Long l3 = 128l;
Long l4 = 128l;

System.out.println(l3==l4);

}
}
输出的结果是:
true
false
原因是:Long 会为数据创建一个初始打小为1个字节(大小为-128~127)的空间存放0或1的二进制的数据,
但是当超过这个容量时,他会重新创建数据的容量在堆内存中new出来,我之所以说他很坑,
还是因为小编没过多的了解底层的实现原理,导致了小编在数据Id比较时出错,
本地的数据源ID值都比较小,实地服务器上的数据却很大,
小编我可谓是煞飞苦心呀,发现了这个问题,之后人都傻掉了,
原来是这样的错误,还有一个就是在集合中可能用到
public class test {

public static void main(String[] args) {

List<Long> list = new ArrayList();
Long l =100l;
Long l2 =100l;

list.add(l);
list.add(l2);

System.out.println(list.get(0)==list.get(1));

Long l3 = 128l;
Long l4 = 128l;
list.add(l3);
list.add(l4);
System.out.println(list.get(2)==list.get(3));

}
}
输出时:
true
false
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息