java – 连续字符串中的条件运算符

前端之家收集整理的这篇文章主要介绍了java – 连续字符串中的条件运算符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道为什么以下程序抛出一个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了解操作符列表及其优先级.还要注意该页面顶部的警告:

Note: Use explicit parentheses when there is even the possibility of confusion.

猜你在找的Java相关文章