Integer中的-128~127

本文深入探讨了Java中int与Integer的区别,包括它们的数据类型、存储位置及使用方式的不同。特别分析了Integer在-128到127范围内值的缓存处理机制,解释了两个Integer变量值相同时,比较结果可能为false的原因。

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

某培训机构出来的转行人,写博的目的在于记住自己面试中遇到的错误,初期理解较浅,望大神们助一臂之力理解透彻
题:int和Integer的区别;Integer i = 128; Integer j =128; System.out.println(i==j)的结果为什么,请写出理由
答:
1.int为基本数据类型,其默认值为0;Integer为引用类型,是int的包装类,其默认值为null;
2.Integer变量需要实例化才能使用;int不需要;
3.int 存在栈中;Integer的引用(即地址)存在栈中,对象数据存放在堆中;

System.out.println(ij);的值应该为false,Integer是一个很特殊的类(只针对Integer)在内存管理当中,在常量池中会对-128~127之间的值会做缓存处理,题中i跟j的值均为128,则此时不会做缓存,需要创建一个新的对象,new Integer(128),“”比较的是地址值跟内容,两者的地址值不同,则输出结果为false;换句话而言,如果Integr i=127; Integer j = 127, 此时i==i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值