Integer a = Integer.valueOf(127);
Integer b = Integer.valueOf(127);
Integer c = Integer.valueOf(128);
Integer d = Integer.valueOf(128);
System.out.println(a == b);
System.out.println(c == d);
结果:
true
false
原因:
Integer类已经对数字0-127做了一个缓存,创建0-127这些常用整数类型是直接从缓存中调引用,所以是true,而超过127则是创建新的对象,所以内存地址的引用不一致,故是false。