代码:
package java6;
import org.junit.Test;
public class InterviewTest {
@Test
public void test1() {
Object o1 = true ? new Integer(1) : new Double(2.0);
System.out.println(o1);//1.0
}
@Test
public void test2() {
Object o2;
if (true)
o2 = new Integer(1);
else
o2 = new Double(2.0);
System.out.println(o2);//1
}
@Test
public void test3() {
Integer i = new Integer(1);
Integer j = new Integer(1);
System.out.println(i == j);//false
//Integer内部定义了IntegerCache结构,IntegerCache中定义了Integer[],
//保存了从-128~127范围内的整数。如果我们使用自动装箱的方式,给Integer赋值的范围在
//-128~128范围内时,可以直接使用数组中的元素,不能再去new了。目的,在于提高效率。
Integer m = 1;
Integer n = 1;
System.out.println(m == n);//true
Integer a = 127;
Integer b = 127;
System.out.println(a == b);//true
Integer x = 128;//相当于new了一个Integer对象
Integer y = 128;//相当于new了一个Integer对象
System.out.println(x == y);//false
}
}
输出:
1.0
1
false
true
true
false
Java中的自动装箱与Integer缓存
这篇博客探讨了Java中的自动装箱过程,通过示例展示了在条件表达式中true?new Integer(1):new Double(2.0)的结果为1.0。还解释了Integer对象的缓存机制,当值在-128到127之间时,Integer对象会复用已存在的实例,从而提高效率。最后,通过比较不同数值的Integer对象,揭示了大于127时新创建对象导致的不等性。
399

被折叠的 条评论
为什么被折叠?



