别来Java卷了 2022-03-28 16:02 采纳率: 100%
浏览 47
已结题

java关于非空判断时遇到的问题

问题遇到的现象和发生背景

我的业务需求内容:
简单描述一下,如果该值为空或为0则设置默认值1

问题相关代码,请勿粘贴截图

以下为模拟代码

public class main {
    private static EmptybindInfo emptybindInfo = new EmptybindInfo();
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        try {
            Integer i = emptybindInfo.getflag();
            i=0;
            if(i==null||i==0){
                emptybindInfo.setflag(1);
            }
            System.out.println(emptybindInfo.getflag());
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
public class main {
    private static EmptybindInfo emptybindInfo = new EmptybindInfo();
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        try {
            Integer i = emptybindInfo.getflag();
            i=0;
            if(i==0||i==null){
                emptybindInfo.setflag(1);
            }
            System.out.println(emptybindInfo.getflag());
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

运行结果及报错内容

第一段代码运行不报错且成功设置默认值
第二段代码运行爆了空指针的错误

我的解答思路和尝试过的方法

这是因为什么呢?有人有遇到过相关问题的吗,可以解释一下原理吗

  • 写回答

6条回答 默认 最新

  • 一起随缘 2022-03-28 16:41
    关注

    首先要清楚if条件中的||条件执行逻辑,当该符号之前的条件为true,后面的条件就不再判断,该符号之前的条件为false才执行符号之后的判断,第二段代码之所以报错,是应为已经给i赋予了值,即代表不为空或null,而||符号之后的逻辑和该逻辑矛盾,故报错

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 4月6日
  • 已采纳回答 3月29日
  • 创建了问题 3月28日

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭