1. 一个有意思的例子
1 class myClass { 2 public static void main(String[] args) { 3 Integer a = 127; 4 Integer b = 127; 5 System.out.println(a==b); 6 7 Integer c = 128; 8 Integer d = 128; 9 System.out.println(c==d);10 }11 }
输出结果
truefalse
解析:Java中,-128~127的数字是immutable的,也就是常量,而对此范围外的数字,每个都会创建一个新的对象。
-------------- 20141128 更新 ---------------------
java为什么会内置-128~127的数字?
一个常量整数赋值给Integer对象,autobox的过程是会产生临时变量的,如果临时变量产生过多就会影响性能,产生GC.而如果把过多的整数嵌入内存又不可能,所以折中的办法就是内置使用频率较高的-128~127.