Integer的一道面试题详解

论坛 期权论坛 脚本     
匿名网站用户   2020-12-19 12:57   875   0

题目就是这样的:

        Integer i1=100;
  Integer i2=100;
  Integer i3=1000;
  Integer i4=1000;
  System.out.println(i1==i2);
  System.out.println(i3==i4);

结果会是什么呢?

true
false
和你想的不一样吧,这是为什么呢?根据java编译机制,Interger i1=100会在编译时变成Interger i1=Integer.valueOf(100),而这个所谓的valueOf()在实现的时候会判断你的数字是否在缓存的-128到127之间,如果在就直接从缓存的数组里面返回一个对象,如果没有就需要new一个新的对象了。这也就是为什么不一样的原因了

转载于:https://my.oschina.net/u/3471785/blog/1525453

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP