我在下面sysout的项目中找到它并且它总是打印'Not Null'.即使我已初始化Val变量,它也会打印'Not Null'.
还有为什么它不在前面打印"mylog"?谁能解释一下?
String Val = null;
System.out.println("mylog : " + Val!=null ? "Not Null" :"Is Null");
Run Code Online (Sandbox Code Playgroud)
使用paranthesis:
System.out.println("mylog : " + (Val!=null ? "Not Null" :"Is Null"));
Run Code Online (Sandbox Code Playgroud)
否则它被解释为:
whatToCheck = "mylog: " + val
System.out.println(whatToCheck !=null ? "Not Null" : "Is Null"
Run Code Online (Sandbox Code Playgroud)
其评估结果类似于"mylog:null"或"mylog:abc".这始终是一个非null的String.
"mylog : " + Val!=null
Run Code Online (Sandbox Code Playgroud)
将被评估为
"mylog : null"
Run Code Online (Sandbox Code Playgroud)
不是null.
救援的括号.
为什么null转换为字符串"null"?请参阅JLS - 15.18.1.1字符串转换:
...如果引用
null,则将其转换为字符串"null"
此外,了解由于Java运算符优先级而发生这种情况非常重要.
| 归档时间: |
|
| 查看次数: |
458 次 |
| 最近记录: |