Java教程—int与Integer的区别
程序员文章站
2022-03-10 20:09:08
...
首先说一下int和Integer的区别:
int 是基本数据类型,Integer是int的包装类。注意:后者的类型是“类”。例如使用泛型,List<Integer> numList;
int初值0,integer是null。
下面看具体例子:
package syswar.cc; public class IntegerCompare { public static void main(String[] args) { // TODO Auto-generated method stub Integer a1 = 2; Integer a2 = 2; Integer b1 = 150; Integer b2 = 150; Integer c1 = new Integer(2); Integer c2 = new Integer(2); Integer d1 = new Integer(150); Integer d2 = new Integer(150); System.out.println("a1==a2?" + (a1==a2)); System.out.println("b1==b2?" + (b1==b2)); System.out.println("c1==c2?" + (c1==c2)); System.out.println("d1==d2?" + (d1==d2)); } }
运行结果:
a1==a2?true b1==b2?false c1==c2?false d1==d2?false>
为什么是这个结果呢?我们先比较a和b两组,Integer初始化时,缓存Integer对象数据,这些Integer对象对应的int值为byte范围,即[-128,127]。
当直接给Integer赋int值时,如果值得范围为[-128,127],Integer直接从缓存中取Integer对象,因此,当直接赋的int值处于[-128,127]时,Integer对象为相同的对象。
而通过new方式取的Integer对象,是直接从堆里面分配的对象,因此,不管具体的int值为多少,==判断的结果都是false
推荐阅读
-
php中const与define的使用区别 详解_PHP教程
-
PHP中isset与array_key_exists的区别实例分析_PHP教程
-
php字符串中的双引号与单引号区别_PHP教程
-
深入分析php中接口与抽象类的区别_PHP教程
-
mysql int取值范围与php intval区别_PHP教程
-
java与c语法上的区别是什么?
-
PHP合并数组+与array_merge的区别分析_PHP教程
-
Java web Filter, Strurs2 Interceptor 和 SpringMVC Interceptor 三者之间的联系与区别
-
深入解析fsockopen与pfsockopen的区别_PHP教程
-
接口与抽象类的区别,接口抽象类区别_PHP教程