java中equals和==的比较

在java基本类型的比较可以用equals和==两种方式。

大家都知道使用equals,是比较连个对象的引用,==比较的是对象本身,但是有些情况跟我想象的还是有差别的,看下面的例子:


如果按照我们原有的思维,输出的肯定是false,true,其实并不是看输出结果:


在看一个例子,如下:


输出结果为:



在JDK5.0及其以上版本,JVM在启动的时候为基本类型的包装类提供了缓冲池,比如Integer池的大小-128~127

当我们使用一个值时,JVM会先到缓冲池查看是否有相同值得对象,如果有就用现成的,如果没有就重新创建一个。

所以对于Integer来说,-128~127之间的数字是从缓冲池取得,所以这个范围内的值在使用==号比较的时候返回的

是true,因为他们的内存地址是相同的,128这个值超出了缓冲池的范围,是新new出来的,内存地址不一样,所以

返回的是false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值