Integer 面试题

1、
Integer num3 = new Integer(10);
Integer num4 = new Integer(10);

System.out.println(num3.equals(num4)); // true
System.out.println(num3 == num4); // false

Integer 重写了 Object 类的 equals 方法,Integer 比较的是 int 值是否相等;
==:比较两个对象的内存地址是否相等。

2、
// 自动装箱
Integer num5 = 100;
Integer num6 = 100;
System.out.println(num5.equals(num6)); // true
System.out.println(num5 == num6); // true
Integer num5 = 130;
Integer num6 = 130;
System.out.println(num5.equals(num6)); // true
System.out.println(num5 == num6); // false

比较结果分别为 true/true 、true/false。为什么?
-128 <= Integer值 <= 127 是 byte 的取值范围,
如果在这个取值范围内,自动装箱就不会新创建对象,而是在常量池中获取;
如果超过这个取值范围,就会创建新的对象。

猜你喜欢

转载自blog.csdn.net/weixin_41463971/article/details/86492871