关于Integer的比较,今天又犯了一个低级错误,记录下

本文通过一个实际案例揭示了在Java中比较Integer对象时容易犯的一个常见错误,并解释了Integer对象比较背后的原理。

今天查看以前所写的代码,看到有一部分被人改了,代码如下:


if
(orgId != organizationUpdateReq.getOrgId()) { //orgId的类型为Integer,organizationUpdateReq.getOrgId()的返回值也是Integer
throw ParameterAssert.warpExcp(ErrorCodeConstants.WRONG_PARAMETER_NOT_ALLOW, "错误!"); 

}

一个很明显的错误,当时我的脑海中是这样想的:

Integer会自动拆箱进行比较,这样就变成了以下的代码:

if (orgId.intValue() != organizationUpdateReq.getOrgId().intValue()) {  //orgId的类型为Integer,organizationUpdateReq.getOrgId()的返回值也是Integer
throw ParameterAssert.warpExcp(ErrorCodeConstants.WRONG_PARAMETER_NOT_ALLOW, "错误!"); 

}

看来有些还是搞混了,Integer的比较是对象之间的比较,不会进行自动拆箱,拆箱和装箱的时机是发生在赋值操作中。

引以为戒!!!!错的太low了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值