Integer与int的区别
工作中一般都是int,很少用到Integer,前几天刚做过一个项目,里面用到Integer,我潜意识中认为Integer与int是一样的,没有多想,就直接用==来判断两个是否相等,等测试时发现,程序有问题。经过几番查找,最终确认==没有起到作用,对此本人很是纳闷,上网查了一下,一切都已明了,对于自己没怎么接触过的,还是确认一下比较好,想当然可能会出错。下面说一下Integer与Int的区别。
1、int是Java的基本数据类型,默认值是0,而Integer则是Java为int提供的封装类,默认值为null。
2、Integer变量必须实例化之后才能使用,而int变量不需要。
3、Integer实际是变量的引用,当new一个Integer时,实际是生成一个指针只指向此对象;而int则是直接存储数值。
关于Integer和int的比较:
1、Integer实际是对一个Integer对象的引用,所以,两个通过new生成的Integer变量肯定不会相等(两个对象,内存地址不同)。
2、Integer和int变量比较时,只要两个变量相等,则结果就会为true(包装类Integer和基本数据类型int比较时,Java会自动拆包装类为int,再进行比较,此时,实际上就是两个int变量的比较)。
3、非new生成的Integer变量和new Integer()生成的变量比较时,结果为false(因为非new生成的Integer变量指向的是java常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,两者在内存中的地址不同)。
4、对于两个非new生成的Integer对象,进行比较时,如果两个变量的值在区间-128到127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false。
参考:
https://www.cnblogs.com/guodongdidi/p/6953217.html

浙公网安备 33010602011771号