int 和 Integer 有什么区别

(1)Integer是int的包装类;int是基本数据类型; 
(2)Integer变量必须实例化后才能使用;int变量不需要; 
(3)Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ; 
(4)Integer的默认值是null;int的默认值是0。

1、Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer和基本数据类型int比较时,java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较)

2、非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。(Integer j = 100 这句应该是被编译成了 Integer j = Integer.valueOf(100),然后经过 IntegerCache 从而 new 了一个 Integer 对象,而前面的 Integer i = new Integer(100) 是直接 new 出来的没有经过 IntegerCache,故二者内存地址不同而不等)

3、对于两个非new生成的Integer对象,进行比较时,如果两个变量的值在区间-128到127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false

如果两个变量的值不在此区间,则比较结果为false

原文地址:https://www.cnblogs.com/goodbye-lazy/p/11220987.html