Integer a = 127;
Integer b = 127;
System.out.println(a == b);
Integer c = 128;
Integer d = 128;
System.out.println(c == d);
结果如下:
true
false
原因:
Java会提前将-128~127范围内的整数缓存到整数常量池中,【==】比较的是地址,127属于常量池范围内,所以两个127的内存地址相同,结果为true;128超出常量池范围,需要在内存中新开辟一块内存空间,两个128的内存地址不相同,结果未false;