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

一个奇葩的Integer

2016-07-14 11:33 253 查看
Integer c=3;

Integer d=3;

Integer e=321;

Integer f=321;

输出:

c==d –> true

e==f –> false

天理何在?

原因就涉及到Java缓冲区内的问题了。

** java中Integer类型对于-128-127之间的数是缓冲区取的,所以用等号比较是一致的。

当c=d=-128~127时,输出为true;

c超出这个范围则为false;

但对于不在这区间的数字是在堆中new出来的。所以地址空间不一样,也就不相等。

Integer c=321,这是一个装箱过程也就是Integer 。c=Integer.valueOf(321) 所以,以后碰到Integer比较值是否相等需要用valueOf() 。

对于Double则没有缓冲区。**
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java