Dek*_*kso 2 java ternary-operator nullpointerexception 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();
}
Run Code Online (Sandbox Code Playgroud)
Era*_*ran 10
它将表达式评估为:
data = (data + " " + test==null)?"":test.toString();
Run Code Online (Sandbox Code Playgroud)
那么,既然data + " " + test不是null,它试图调用test.toString(),即使test是null.
更改
data = data + " " + test==null?"":test.toString();
Run Code Online (Sandbox Code Playgroud)
至
data = data + " " + (test==null?"":test.toString());
Run Code Online (Sandbox Code Playgroud)