我不确定如何描述我的标题问题,所以这是我的代码:
public class NullLogic {
public static void main(String[] args) {
NullLogic nl = new NullLogic();
System.out.println("nl.getNull() = " + nl.getNull() );
System.out.println("nl.getNull() == null = " + (nl.getNull() == null) );
System.out.println("nl.getNull() == null = " + nl.getNull() == null );
}
private String getNull() {
return null;
}
}
这是输出:
nl.getNull() = null
nl.getNull() == null = true
false
好的——第一行没问题,正是我所期望的。 第二行也不错。
现在我在第三行遇到了问题,我知道计算结果为 boolean 值的语句应该放在括号中,但我认为我应该得到运行时错误或其他错误,而不是成功执行抑制字符串系统输出的一部分。
这是怎么回事?
这不是我需要解决的严重问题,但我不知道这里发生了什么,我想知道。
谢谢!
最佳答案
System.out.println("nl.getNull() == null = " + nl.getNull() == null )
评估为
System.out.println(("nl.getNull() == null = " + nl.getNull()) == null )
即,首先连接两个 String
(第一个不为 null - "nl.getNull() == null = "
,第二个为 >null
,但即使两者都是 null
,将它们连接起来也会产生一个非 null
String
)。
此连接的结果是字符串
:“nl.getNull() == null = null”
。
然后将 "nl.getNull() == null = null"
与 null
进行比较,其计算结果为 false
。
关于java - System.out.println 在打印计算结果为 boolean 值的内容时没有执行我所期望的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47875219/