Integer x = 4;//自动装箱。//Integer.valueOf(4) 小心 x = null 运算前进行判断
x = x/* x.intValue() */ + 2;//x+2:x 进行自动拆箱。变成成了int类型。和2进行加法运算。
//再将和进行装箱赋给x。
Integer m = 128;
Integer n = 128;
m == n; // false
Integer a = 127;
Integer b = 127;
a == b; // true 因为a和b指向了同一个Integer对象。
//因为当数值在byte范围内容,对于新特性会将其存放在缓存池中,再次使用时,如果该数值已经存在,则不会在开辟新的空间。
JVM认为这些比较小的数字使用的频率会很高, 使用一次new一个对象浪费资源
这是一种设计模式:享元模式
new 出来的 Integer 用 == 判断 一定是 false
产生Integer对象用下面这个方法public static IntegervalueOf(int i)返回一个表示指定的 int 值的 Integer 实例。如果不需要新的 Integer 实例,则通常应优先使用该方法,而不是构造方法 Integer(int),因为该方法有可能通过缓存经常请求的值而显著提高空间和时间性能。
|
|