实例的比较"/>
Java中的Integer、Long等实例的比较
1.描述:
说明:ReportRepairService rrService是保修服务方法类,rrService.getReceivedUserId() != userDetail.getId()判断的是接单人员的id是否和订单中的接单人员id是否相同,
如果不相同,则打印指定的报修订单已派给他人,您无法接单。
------------------------------------------------------------------------------------------------------------------------------
ReportRepairService rrService = this.rrOrderService .findReportRepairServiceById(orderId);
if (rrService.getReceivedUserId() != userDetail.getId()) {
ErrorCodeHelper
.Code400(dataMap, "指定的报修订单已派给他人,您无法接单。");
}else{
System.out.println("接单成功");
}
-----------------------------------------------------------------------------------------------------------------------------------
2.问题:
这是运行在windows tomcat8.0的一段springmvc的服务器程序,在windows下本地运行是正常的打印接单成功。但是迁移到阿里云的tomcat8.0确实rrService.getReceivedUserId() != userDetail.getId()输出的永远是“指定的报修订单已派给他人,您无法接单”。也就是说rrService.getReceivedUserId() != userDetail.getId()的真值在windows和lunix系统中执行的结果是不同的。
3.问题解决:
根本原因还是不得而知。但是Java中的Integer、Long等实例的比较,需要使用equal()方法,不能使用==、!=运算符,因为Integer、Long为引用类型。
与其类似的,类比的有.NET中的Int32、Int64等变量的比较,可以使用equal()方法,也可以使用==、!=运算符,因为Int32、Int64不是引用类型,而是值类型。
所以采用.equal()方法去判断,则是会保持一样的结果,windows和lunix是一致的结果。
更多推荐
Java中的Integer、Long等实例的比较
发布评论