`
angkorpeach
  • 浏览: 119445 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java integer和int的问题

阅读更多

今天遇到这样一个问题

  • 大小: 42.6 KB
  • 大小: 45.4 KB
分享到:
评论
2 楼 xiaoyu1985ban 2012-01-30  
很显然,在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,对象在内存中被重用,所以使用==进行比较时,实际上参考至同一个对象。

我推断,自动装箱的底层实现实际上是调用了Integer.valueOf(int n)方法,也就是说。形如“Integer a = 100;”的自动装箱的语句等价于Integer a = Integer.valueOf(100);

然后看了一下JDK中相关的源码,发现在valueOf方法的实现中,对于–128到127的值,是从缓存中获取的(IntegerCache),而不是new出来的。

1 楼 angkorpeach 2012-01-28  
咋不能显示全图,点击图片看吧。这个问题不是我本人发现的,是我同学,我同学最后找到的答案如下:Integer 与Short包装类对象,其值如果在-127到+128之间  用“==”运算符会返回true  但是不知道为什么。而且只限于Short型和Integer型,Float Long等就直接全false了 。期待完美解释

相关推荐

Global site tag (gtag.js) - Google Analytics