Java中的Integer、Long等实例的比较

来源:互联网 发布:如何靠网络挣钱 编辑:程序博客网 时间:2024/05/16 01:06

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是一致的结果。

0 0