Integer 与 int 类型 区别
Integer 类在JDK1.0的时候就有了,它是一个类,是 int 基本数据类型的封装类
1、Integer是int的包装类,int则是java的一种基本数据类型
2、Integer变量必须实例化后才能使用,而int变量不需要
3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
4、Integer的默认值是null,int的默认值是0
源码:
public static Integer valueOf(int i){ assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high){ return IntegerCache.cache[i + (-IntegerCache.low)]; } return new Integer(i); }
分析源码我们可以知道在 i >= -128 并且 i <= 127 的时候,第一次声明会将 i 的值放入缓存中,第二次直接取缓存里面的数据,而不是重新创建一个Ingeter 对象。那么第一个打印结果因为 i = 10 在缓存表示范围内,所以(比较的是地址,地址一样)为 true。
(因为new生成的是两个对象,其内存地址不同)。
详细比较: https://blog.csdn.net/teacher_lee_zzsxt/article/details/79230501
所以比较值是否一样,用 equleas