Integer 面试题

本文探讨了Integer类中equals方法与==运算符在比较时的不同。Integer.equals比较的是int值,而==则检查对象内存地址。在-128到127之间,Integer会复用对象,导致==可能返回true,而超出该范围则可能创建新对象,导致不相等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 的取值范围,
如果在这个取值范围内,自动装箱就不会新创建对象,而是在常量池中获取;
如果超过这个取值范围,就会创建新的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值