java - 用于 Bigdecimal 空验证的三元运算符

标签 java nullpointerexception ternary-operator bigdecimal

为什么我在这段代码中遇到空指针异常?

    BigDecimal test = null;
    String data = "";
    try {
    System.out.println(test==null?"":test.toString());
    data = test==null?"":test.toString();
    System.out.println(data);
    data = data +  " " + test==null?"":test.toString(); // catching null pointer in this line
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }

最佳答案

它将表达式计算为:

data = (data +  " " + test==null)?"":test.toString();

因此,由于 data + ""+ test 不是 null,它会尝试调用 test.toString(),即使 >testnull

改变

data = data +  " " + test==null?"":test.toString();

data = data +  " " + (test==null?"":test.toString());

关于java - 用于 Bigdecimal 空验证的三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52924935/

相关文章:

Java,尽管位于同一个包中,但未定义类型的方法

java - 检查字符串内容

java - onclick 监听器的 Android 空指针异常

java - 无法清除过时文件的服务器 : null java. lang.NullPointerException

javascript - JS ECMA6 - 用于向后兼容的三元运算符

java - 为什么三元运算符不能在 java 中的方法参数中工作

java - JTable:覆盖 CTRL+C 行为

java - 使用 lambda 的内联过滤避免意外的 null

javascript - 为什么这段代码没有按预期工作?

java - PrintWriter 与 FileWriter 在以下上下文中的比较