为什么我在这段代码中遇到空指针异常?
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()
,即使 >test
为 null
。
改变
data = data + " " + test==null?"":test.toString();
至
data = data + " " + (test==null?"":test.toString());
关于java - 用于 Bigdecimal 空验证的三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52924935/