我想知道为什么以下程序会抛出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。另请注意该页面顶部的警告:

07-24 09:45
查看更多