JAVA128陷阱

测试:

public static void main(String[] args){
    Integer a=128;    
    Integer b=128;
    System.out.print(a==b);//false
    a=127;
    b=127;
    System.out.print(a==b);//true
}

实际情况是当Integer的值处于-128到127之间时,==都会返回ture,而在范围之外,则返回false

 

这是为什么呢?

Integer在内部为我们封装了一层判断,用来自动装箱和拆箱。如果值在-128~127之间,会返回一个实例的缓存。

因为-128~127是平时比较常用的数,多次使用相同的底层对象可以有效的对内存进行优化。

 

那么如果我们就是想比较两个范围外的值是否相等怎么办?

那就用equals方法,Integer自己重写了equals方法,因此,如果我们:
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值