Integer类型的对象相等的问题

本文探讨了Java中Integer对象在特定范围内会被缓存并重用的现象,通过一个具体的示例程序展示了当Integer对象的值在-128至127之间时,这些对象会被重用;而超出该范围,则会创建新的对象。这一特性对于理解Java内存管理和对象比较非常重要。

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

今天做腾讯的模拟笔试题,遇到了一个关于Integer类型的对象相等和equals的问题,题目如下

public class Main{
    public static void main(String[] args) {
        Integer i1 = 127, i2 = 127, i3 = 128, i4 = 128;
        System.out.println(i1.equals(i2));
        System.out.println(i1 == i2);
        System.out.println(i3.equals(i4));
        System.out.println(i3 == i4);
    }
}

只是让选择输出的结果,每个选项里面都只有一个false,其余全部为true。下来特意做了一下测试

输出结果是true  true  true  false

然后就上网查了一下,网上给的解释是涉及到自动装箱和拆箱的问题

java定义:在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象。如果超出了这个范围,创建的Integer对象就不会被重用,也就是说会在内存中新建一个全新的对象。

特此记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值