您好,欢迎访问一九零五行业门户网

Java教程—int与Integer的区别

首先说一下int和integer的区别:
int 是基本数据类型,integer是int的包装类。注意:后者的类型是“类”。例如使用泛型,listc0f559cc8d56b43654fcbe4aa9df7b4a 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
其它类似信息

推荐信息