讲师博文
integer与int的种种比较 来源 : 未知     2018-09-21

近在上课过程中,发现之前自己一直忽略的问题,就是int与Integer的实实在在的区别。我们知道,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null,这些是众所周知的。但是,如果”Integer i = 1;int j = 1; i==j”为true还是为false?这时就不是那么从容自若了。所以我对它们进行了总结,希望对大家有帮助。

首先看代码:

class Test

{

public static void main(String[] args)

{

Integer i = 10;

Integer j = 10;

int ii = new Integer(10);

int jj = new Integer(10);

Integer iii = new Integer(10);

Integer jjj = new Integer(10);

1. System.out.println(i==j);

2. System.out.println(ii==jj);

3. System.out.println(ii==jjj);

4. System.out.println(i==iii);

5. System.out.println(i==jj);

}

}

第一行输出是true,两个引用变量指向的都是常量10,这是没有疑问的。

第二行输出是true,两个整型变量比较的是数值。

第三行输出是多少这里就有些疑问了,这里要清楚,int 和 Integer比较时,会自动拆箱,所以返回true

第四行输出是false,因为两个引用变量指向的是两个不同的内存空间。

第五行输出是true,这和第三行一样的。

总结如下:

① 论如何,Integer与new Integer不会相等。不会经历拆箱过程,ii的引用指向堆,而i指向专门存放他的内存(常量池),他们的内存地址不一样,所以为false

② 两个都是new出来的,都为false

③ int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比

扫码申领本地嵌入式教学实录全套视频及配套源码

上一篇:APK之间的互相调用

下一篇:智能控制系统中的信号---红外线

400-611-6270

Copyright © 2004-2024 华清远见教育科技集团 版权所有
京ICP备16055225号-5京公海网安备11010802025203号