相对于String而言,Integer纯洁多了,没有那么多套路,但也并不是没有。看下面代码片段,然后和运行后的结果比对象,如果知道为什么会这样,那说明你的Java基础不错。
@Test
public void test2() {
Integer a1 = 1;
Integer a2 = 1;
System.out.println(a1 == a2);
Integer b1 = 1111;
Integer b2 = 1111;
System.out.println(b1==b2);
Integer c1 = new Integer(1);
Integer c2 = new Integer(1);
System.out.println(c1==c2);
}
第一个输出:和Integer缓存机制有关系,如果范围在-128至127之间,无论如何,返回true;
第二个输出:和第一的对照组。因为1111并不在范围内,所以返回了false;
第三个输出:压根就是出来捣乱的,无论如何new关键字后,建立在heap上面,比较引用地址,当然返回false。