Java 基础 · 单选题 · 第 4 题
Java 后端开发面试 · 第 4 题
执行下面的代码,两次输出依次是?
Integer a = 127, b = 127;
Integer c = 128, d = 128;
System.out.println(a == b);
System.out.println(c == d);- Atrue、true
- Bfalse、false
- Ctrue、false
- Dfalse、true
答案
C C. true、false
解析
自动装箱调用 Integer.valueOf,它会缓存 -128 到 127 的 Integer 对象,所以 a 和 b 是同一个对象。128 超出缓存范围,每次装箱都创建新对象,== 比较引用就是 false。比较包装类的数值一律用 equals,或者先拆箱再比。