Integer之-128~127


对于integer而言,有一个特殊的区间,范围是-128~127


-------------------------------------------------------------------------------


Integer a = 1;
        Integer b = 1;

像这样赋值,在这个区间里面,ab都是同一个对象,即== 为true


----------------------------------------------------------------------------------


        Integer a =new Integer(1);
Integer b =new Integer(1);

如果通过new的方式,即使在区间里面,  == 也为false,不是同一个对象。

-------------------------------------------------------------------------------------


那么超过这个区间了

                Integer a = 200;
Integer b = 200;

即使这样  ==  也为false,为两个不同的对象



---------------------------------------------------------


为什么呢?

因为将int类型的值赋值给Integer,那么就会调用 Integer.valueOf();的方法。

看源码




high为 127  ,low为-128

传入的值如果在这个范围内,就返回cache数组里面的值

否知就new一个


原文地址:https://www.cnblogs.com/fangyuandoit/p/13713891.html