大家好,今天给大家介绍integer与int的种种比较,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。
近在上课过程中,发现之前自己一直忽略的问题,就是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再去比
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
(点击找小助理领取)