JAVA缓存机制问题

下面一段代码:

Float i11 = 333f;
Float i22 = 333f;
System.out.println(i11 == i22);

输出结果是FALSE。
原因:在Java中,当比较两个Float对象时,使用 == 比较的是它们的引用地址,而不是它们的值。即使两个Float对象的值相同,它们的引用地址也可能不同,因此使用 == 比较会返回false。
在给Float对象赋值时,如果赋的值在-128到127的范围内,Java会使用缓存机制,即返回缓存中已有的对象,而不是每次都创建新的对象。但是,333不在这个范围内,所以每次赋值都会创建一个新的Float对象,因此i11和i22引用的是不同的对象,使用"=="比较会返回false。
如果要比较两个Float对象的值是否相等,应该使用equals()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值