我想知道为什么以下程序会抛出一个NPE
public static void main(String[] args) {
Integer testInteger = null;
String test = "test" + testInteger == null ? "(null)" : testInteger.toString();
}
Run Code Online (Sandbox Code Playgroud)
而这个
public static void main(String[] args) {
Integer testInteger = null;
String test = "test" + (testInteger == null ? "(null)" : testInteger.toString());
}
Run Code Online (Sandbox Code Playgroud)
没有.这当然是一个优先考虑的问题,我很好奇连接是如何工作的.
Mar*_*ers 19
这是理解运算符优先级的重要性的一个示例.
你需要括号,否则它被解释如下:
String test = ("test" + testInteger) == null ? "(null)" : testInteger.toString();
Run Code Online (Sandbox Code Playgroud)
请参阅此处以获取运算符及其优先级的列表.另请注意该页面顶部的警告:
注意:甚至可能出现混淆时使用明确的括号.
没有括号,它有效地做到了这一点:
String test = ("test" + testInteger) == null ? "(null)" : testInteger.toString();
这导致了NPE.
| 归档时间: |
|
| 查看次数: |
7557 次 |
| 最近记录: |