JAVA-基础类型-遇到问题总结

 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 

    

猜你喜欢

转载自blog.csdn.net/weixin_37618127/article/details/81000345