您的位置:首页 > 其它

基本类型的装箱与拆箱的比较

2017-04-21 16:07 309 查看
1  Integer a = 10;
2	Integer b = 10;
3	Integer c = new Integer(10);
4	System.out.println(a==b);
5	System.out.println(a==c);

我们可以猜想一下上面输出会是什么?答案是true,false,为什么出现这样的结果昵?这就涉及到了java的自动拆箱与装箱,首先java虚拟机先将1与2自动装箱,相当于实行了Integer a = new Integer(10); Integer b = new Integer(10);那这么看的的话,按道理5也应该输出为true。为什么却是false昵?java为了提高效率,将一些经常用到的数字-128~127的对象缓存起来,所以1与2实际并没有创建新的对象,而是使用的是缓存的同一个对象,所以为true,但3是自己创建了新对象,所以与缓存的对象就是两个不同的对象,所以为false。

Integer a = 200;
Integer b = 200;
6 System.out.println(a==b);这也就不难理解上面6输出的为false,因为创建了两个新对象,所以false。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐