Java中"a".equals(a)和(a).equals("a")
时间: 2024-05-23 20:12:43 浏览: 34
在Java中,".equals"是用来比较两个对象是否相等的方法,而"=="是用来比较两个对象在内存中的地址是否相同的操作符。因此,对于字符串"a"和对象a来说,它们是两个不同的对象,它们在内存中的地址不同,因此,使用"=="进行比较会得到false。而使用".equals"来比较它们的内容是否相等,则会得到true。
所以,"a".equals(a)会比较字符串"a"和对象a的内容是否相等,而(a).equals("a")会比较对象a和字符串"a"的内容是否相等。如果a是一个字符串对象,那么这两个表达式的结果是一样的。但如果a是其他类型的对象,那么这两个表达式的结果可能不同。
相关问题
优化这段Java代码:if (("S".equals(dept) && "Y".equals(bagInfo.getBagSOpen()) && !"Y".equals(bagInfo.getBagSFinished())) || ("C".equals(dept) && "Y".equals(bagInfo.getBagCOpen()) && !"Y".equals(bagInfo.getBagCFinished())) || ("G".equals(dept) && "Y".equals(bagInfo.getBagGOpen()) && !"Y".equals(bagInfo.getBagGFinished()))) { record.setBagState("0"); record.setBagDescribe("需开包"); } else if (("S".equals(dept) && "Y".equals(bagInfo.getBagSOpen()) && "Y".equals(bagInfo.getBagSFinished())) || ("C".equals(dept) && "Y".equals(bagInfo.getBagCOpen()) && "Y".equals(bagInfo.getBagCFinished())) || ("G".equals(dept) && "Y".equals(bagInfo.getBagGOpen()) && "Y".equals(bagInfo.getBagGFinished()))) { record.setBagState("0"); record.setBagDescribe("开包完成"); } else if ((("S".equals(dept) && "N".equals(bagInfo.getBagSOpen()) && "N".equals(bagInfo.getBagSFinished())) || ("C".equals(dept) && "N".equals(bagInfo.getBagCOpen()) && "N".equals(bagInfo.getBagCFinished())) || ("G".equals(dept) && "N".equals(bagInfo.getBagGOpen()) && "N".equals(bagInfo.getBagGFinished())))) { record.setBagState("0"); record.setBagDescribe("正常"); } else { record.setBagState("0"); record.setBagDescribe("未知"); }
可以将代码中的重复部分提取出来,使用一个方法来判断是否符合条件并设置 record 的值。具体实现如下:
```
private void setRecordBagState(String dept, BagInfo bagInfo, Record record) {
if (("Y".equals(getBagOpen(dept, bagInfo)) && !"Y".equals(getBagFinished(dept, bagInfo)))) {
record.setBagState("0");
record.setBagDescribe("需开包");
} else if (("Y".equals(getBagOpen(dept, bagInfo)) && "Y".equals(getBagFinished(dept, bagInfo)))) {
record.setBagState("0");
record.setBagDescribe("开包完成");
} else if (("N".equals(getBagOpen(dept, bagInfo)) && "N".equals(getBagFinished(dept, bagInfo)))) {
record.setBagState("0");
record.setBagDescribe("正常");
} else {
record.setBagState("0");
record.setBagDescribe("未知");
}
}
private String getBagOpen(String dept, BagInfo bagInfo) {
switch (dept) {
case "S":
return bagInfo.getBagSOpen();
case "C":
return bagInfo.getBagCOpen();
case "G":
return bagInfo.getBagGOpen();
default:
return "";
}
}
private String getBagFinished(String dept, BagInfo bagInfo) {
switch (dept) {
case "S":
return bagInfo.getBagSFinished();
case "C":
return bagInfo.getBagCFinished();
case "G":
return bagInfo.getBagGFinished();
default:
return "";
}
}
```
然后在原代码中调用 `setRecordBagState` 方法即可:
```
setRecordBagState(dept, bagInfo, record);
```
@RequestMapping("/shenqingupdate") public String update() { _var = new LinkedHashMap(); // 重置数据 // 创建实体类 Shenqing post = new Shenqing(); // 将前台表单数据填充到实体类 if (!Request.get("biaoti").equals("")) post.setBiaoti(Request.get("biaoti")); if (!Request.get("wuziid").equals("")) post.setWuziid(Request.getInt("wuziid")); if (!Request.get("bianhao").equals("")) post.setBianhao(Request.get("bianhao")); if (!Request.get("leixing").equals("")) post.setLeixing(Request.get("leixing")); if (!Request.get("mingcheng").equals("")) post.setMingcheng(Request.get("mingcheng")); if (!Request.get("shuliang").equals("")) post.setShuliang(Request.getInt("shuliang")); if (!Request.get("shenqingren").equals("")) post.setShenqingren(Request.get("shenqingren")); if (!Request.get("addtime").equals("")) post.setAddtime(Request.get("addtime")); if (!Request.get("zhuangtai").equals("")) post.setZhuangtai(Request.get("zhuangtai")); post.setId(Request.getInt("id")); service.update(post); // 更新数据 int charuid = post.getId().intValue(); if (isAjax()) { return jsonResult(post); } return showSuccess("保存成功", Request.get("referer")); // 弹出保存成功,并跳转到前台提交的 referer 页面 }
这段代码是一个 Java Spring MVC 的控制器方法,用于处理一个POST请求。根据前端表单提交的数据,创建一个实体类 Shenqing 的实例,然后将表单数据填充到这个实例中。接着调用 service.update() 方法将更新后的实例保存到数据库中。最后判断是否是Ajax请求,如果是就返回JSON格式的结果,否则就提示保存成功并跳转到之前的页面。
阅读全文