Java中"a".equals(a)和(a).equals("a")
时间: 2024-05-23 22:12:43 浏览: 28
在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);
```
Cannot invoke "java.lang.Integer.equals(Object)" because the return value of "com.gljc.bus.entity.StationList.getShiftId()" is null
根据提供的引用内容,出现这个错误的原因是`com.gljc.bus.entity.StationList.getShiftId()`方法返回了null值,而在调用`java.lang.Integer.equals(Object)`方法时,无法对null进行比较,从而导致了`Cannot invoke "java.lang.Integer.equals(Object)" because the return value of "com.gljc.bus.entity.StationList.getShiftId()" is null`的异常。
为了解决这个问题,你可以在调用`equals()`方法之前,先判断返回值是否为null。如果返回值为null,可以使用其他方式处理这种情况,例如使用默认值或者进行其他逻辑处理。
以下是一个示例代码,展示了如何处理这个异常:
```java
Integer shiftId = stationList.getShiftId();
if (shiftId != null) {
// 进行equals()方法的比较操作
if (shiftId.equals(anotherShiftId)) {
// 执行相应的逻辑
}
} else {
// 处理返回值为null的情况
// 可以使用默认值或者进行其他逻辑处理
}
```
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)