xxx==null和xxx.equals(null)的区别

本文探讨了在Java中如何正确地进行变量是否为null的判断。文章对比了使用xxx==null与xxx.equals(null)两种方式的区别,并指出后者不仅毫无意义,还可能导致程序抛出空指针异常。正确的做法是仅使用前者进行判空操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果xxx不是null的话,xxx==null将返回false,如果xxx是null的话,xxx将返回ture

而对xxx.equals(null)而言,他将永远返回false,因为如果xxx不是null,将不会返回false,如果xxx是null的话,将会抛出空指针异常NullPointerException

总结一句话就是:永远不要用xxx.equals(null),因为没有意义。

//新增单条看板数据 private void saveOrderBoard(OrderInfoDm dm){ //查询表头数据 OrderHeader orderHeader = orderRemote.findOrderByOrderNo(dm.getOrderNo()); if(orderHeader == null){ throw new EJBException("orderNo找不到符合的订单数据:" + dm.getOrderNo()); } List<Part> changePartList = orderHeader.getPartList(); Part part = changePartList.stream().filter(x->dm.getLineId().equals(String.valueOf(x.getLineId()))).findAny().orElse(null); //可能先更新后删除了,更新的时候查找也已经没数据了 // if(!"delete".equals(dm.getType()) && part == null){ // throw new EJBException("根据lineId找不到符合的零件数据:" + dm.getLineId()); // } saveBoard(orderHeader,part,dm); logger.info("操作单条数据成功:" + dm.getOrderNo() + "," + dm.getLineId()); } private void saveBoard(OrderHeader orderHeader,Part part,OrderInfoDm dm) { BoardDomain newBoard = new BoardDomain(); StringBuilder contentBuilder = new StringBuilder(); String state = "待工程跟进"; //组合订单编码lineId(E021-3259369,167493205) String boardKey = String.format("%s,%s", new Object[] { orderHeader.getOrderNo(), dm != null && part == null ? dm.getLineId() : part == null ? 0 : part.getLineId()}); //整单新增或单条零件新增或者整单没有零件的情况 if(dm == null || "insert".equals(dm.getType())) { //有零件的数据 if(part != null){ if (part.getRemark() == null || part.getRemark().contains("待复")) { return; } String actionType = findMatchedKeyword(part.getRemark()); if (actionType == null) { return; } } if(dm == null && part == null){ //判断是否3字尾订单,跳过 String fourthChar = orderHeader.getOrderNo().substring(3, 4); if ("3".equals(fourthChar)) { return; } state = "待接单跟进"; } contentBuilder.append(dm != null && part == null ? "该零件已取消" : part == null ? "零件未待预" : part.getRemark() == null ? "" : part.getRemark()); } else{ if("update".equals(dm.getType())){ //单条修改数据,且与最新零件做对比 if(part != null){ if(dm.getQty() != null && !dm.getQty().isEmpty() && !String.valueOf(part.getQty()).equals(dm.getQty())) { contentBuilder.append("数量由" + dm.getQty() + "变更为" + part.getQty() + ","); } if(dm.getPartNo() != null && !dm.getPartNo().isEmpty() && !String.valueOf(part.getItemCode()).equals(dm.getPartNo())){ contentBuilder.append("编码由" + dm.getPartNo() + "变更为" + part.getItemCode() + ","); } if(dm.getPartDesc() != null && !dm.getPartDesc().isEmpty() && !String.valueOf(part.getItemDesc()).equals(dm.getPartDesc())){ contentBuilder.append("描述由" + dm.getPartDesc() + "变更为" + part.getItemDesc() + ","); } if(dm.getRemark() != null && !dm.getRemark().isEmpty() && !String.valueOf(part.getRemark()).equals(dm.getRemark())){ contentBuilder.append("备注由" + dm.getRemark() + "变更为" + part.getRemark()+ ","); } } //更新把最新的part备注也要插入 contentBuilder.append(part != null ? part.getRemark() : "该零件已取消"); }else{ //剩下就是删除操作,需要备注 contentBuilder.append("该零件已取消"); } boardKey = String.format("%s,%s,%s", new Object[] { orderHeader.getOrderNo(), part == null ? dm.getLineId() : part.getLineId(), new Date().getTime()}); } //新增 newBoard.setBoardKey(boardKey); newBoard.setBoardType(BOARD_TYPE); newBoard.setContent(jsonContent(orderHeader,part,contentBuilder.toString())); logger.info("json没问题"); newBoard.setTag1(String.valueOf(orderHeader.getOrgId())); //tag2改为筛选来源类型 newBoard.setTag2(part == null ? "" : part.getRemark() != null && part.getRemark().contains("外购") ? "外购" : "自产"); newBoard.setTag3(orderHeader.getProducingDeptCode()); newBoard.setTag4(orderHeader.getOrderNo()); //tag5赋值状态,默认为“待工程跟进”,零件未待预”的优先默认“待接单跟进”,备注包含”通知计划下单”,优先默认“待计划跟进”。 newBoard.setTag5(part != null && part.getRemark() != null && part.getRemark().contains("通知计划下单") ? "待计划跟进" : state); newBoard.setSort1(sdf.format(orderHeader.getBookedDate())); newBoard.setLastUpdateDate(new Date()); lkmBoardRemote.saveBoard(newBoard); } saveBoard的方法里要加try catch吗
07-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值