如何||运算符在Java中的return语句中工作?

时间:2015-11-25 22:20:28

标签: java recursion

我正在研究一个Java程序,其中包含整数的文本文件被读入简化的LinkedList,然后考虑列表的所有可能子集。在我的代码底部,在return语句的中间有一个OR运算符,用||表示。编译器如何决定是否表达||的左侧或右侧运营商?我调试了程序并逐行逐步执行,我注意到双方都是递归表达的。如何表达或声明的两个部分?我是新手,所以我觉得很困惑。任何帮助将不胜感激。

Grid

2 个答案:

答案 0 :(得分:1)

如果subsetSumXOR(node.next, sumOne + node.item, sumTwo, target)为真,则返回true

否则,将评估||右侧的表达式并返回其值。

了解有关短路运营商的更多信息

答案 1 :(得分:1)

首先评估左侧,如果为真,则右侧未评估 。这是调用快捷方式(语句(true||expensiveFunction())永远不能评估为false,所以为什么要烦扰expensiveFunction()?)。您可以通过输入看到这一点,不需要任何递归。

您可能看到的是左侧评估为 false ,在这种情况下是,它将评估右侧。