我不知道下面的代码如何返回false。Java逻辑短路运算符如何工作
String line ="";
if (line.length() > 0 && !line.startsWith("/*") || !line.startsWith("--")) {
return false;
}
我知道,如果我们使用& &是,执行从左侧开始和它进行唯一如果离开结果为真,否则不要继续。
但在上面的代码中它返回false。 line.length()
的值为0,但其验证的第二个条件并评估为真,因为其他两个条件为真并返回false。
帮我理解这个操作符。
谢谢。
谢谢你的时间。我所说的是,如果**** line.length()> 0 ****失败,为什么它会验证其他事情。它应该短路吗?它不应该验证其他条件,它应该通过if测试。纠正我,如果我错了。 – Abdul
@Abdul它确实短路,这就是为什么'!line.startsWith(“/ *”)'永远不会被评估的原因,然而'' !line.startsWith(“ - ”)不是AND运算符的操作数的一部分,因此在AND运算符评估为false之后,OR将被评估 - '(false ||!line.startsWith(“ - “ - ”)' - returned true。 – Eran
谢谢,在添加括号后,我明白了。 – Abdul