我想知道为什么以下程序会抛出NPE
public static void main(String[] args) {
Integer testInteger = null;
String test = "test" + testInteger == null ? "(null)" : testInteger.toString();
}
而这
public static void main(String[] args) {
Integer testInteger = null;
String test = "test" + (testInteger == null ? "(null)" : testInteger.toString());
}
没有。当然,这是一个优先问题,我很好奇串联的工作原理。
最佳答案
这是理解operator precedence重要性的示例。
您需要括号,否则解释如下:
String test = ("test" + testInteger) == null ? "(null)" : testInteger.toString();
有关操作符及其优先级的列表,请参见here。另请注意该页面顶部的警告: