(1)Integer是int的包装类,int是基本数据类型
(2)Integer变量必须实例化会才能使用,int变量则不用
(3)Integer的默认值是null,int的默认值是0
(4)Integer实际是对象的引用,new Integer()会生成一个指针指向此对象;int则直接存储数据值
int和Integer的比较
(1)
Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j); //false
两个通过new生成的Integer变量永远不相等,因为new生成的两个对象,其内存地址不一样
(2)
Integer i = new Integer(200);
int j = 200;
System.out.print(i == j); //true
包装类和基本数据类型int比较时,Java会自动拆包装类为int进行比较,实际上是两个int变量的比较
(3)
Integer i = new Integer(100);
Integer j = 100;
System.out.print(i == j); //false
数值在-128~127之间时,非new生成的Integer变量指向的是Java常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,两者的内存地址不一样
(4)
Integer i = 100;
Integer j = 100;
System.out.print(i == j); //true
Integer i = 128;
Integer j = 128;
System.out.print(i == j); //false
两个非new生成的Integer对象进行比较时,如果变量在-128~127之间,比较结果为true,如果不在此区间,则比较结果为false
标签:区别,int,System,new,Integer,100,out From: https://www.cnblogs.com/yumeixiaosheng/p/18088408