码迷,mamicode.com
首页 > 编程语言 > 详细

java中Integer i1= 0; Integer i2= 0; 为什么可以用 == 符号呢

时间:2016-07-10 23:15:39      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

java中Integer i1= 0; Integer i2= 0;  有i1 == i2,且有i1 = 1;那么i2为什么不会变成1呢?

我这个时候的想法是:这是因为java中整型常量是基于int的,而java中有自动包装机制,也就是说看起来i1,i2是Integer类型,但是其底层还是基于int类型的(不能理解的话在java中还有一个地方那就是Arrays.asList(T...args) 他返回一个基于数组的List,如果在List中改变其大小,那么将会引发异常[UnsupportedOperationException]),所以指向的是同一个值(int),那么可以用==符号也就可以理解了,而如果你通过new Integer(0) 赋值给i1 那么,由于是在新堆中新开辟了一块内存,所以用 == 符号在相同对象之间是比较内存地址,那么肯定是false,且不说相同对象,又因为其中i2是基于int类,在潜在比较重就是返回一个false了,虽然表面上看起来他们是相同类型!!

java中Integer i1= 0; Integer i2= 0; 为什么可以用 == 符号呢

标签:

原文地址:http://www.cnblogs.com/tianweijiang/p/5658740.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!