本问题已经有最佳答案,请猛点这里访问。
我有两个函数:functionA()和functionB(),两者都有一个返回类型boolean。
我想继续我的执行,如果其中任何一个返回true并且如果functionA返回true我不希望函数B执行。
当&&工作(如果一个是假的,它不检查另一个),做|| 工作原理一样吗?
if(functionA() || functionB()){
//Do Your Work
}
上面的代码是否符合我的要求?
是的,只要两个函数都返回boolean。
你为什么不尝试而不是浪费时间在这里问一个问题?
一个恰当的答案只会说"是"。 很容易自己尝试这个。
根据Java语言规范,§15.24的规定:
The conditional-or operator || operator is like | (§15.22.2), but evaluates its right-hand operand only if the value of its left-hand operand is false.
+1对于JLS。
如果您的第一个函数returns true,那么logical OR会使您的第二个函数短路。
http://en.wikipedia.org/wiki/Short-circuit_evaluation
"默认情况下"? 你能用Java改变这种行为吗?
@ antti.huima Java还有& / |逻辑运算符(非按位),它将评估所有条件,即使其中一个是假/真。 也就是说,这两个运营商不会短路。
boolean f1 = functionA();
boolean f2 = functionB();
if(f1 || f2){
// if statement
} else {
// else statement
}
这只是示例代码,而不是问题的答案。 它也不是用户提出的要求,因为无论functionA的结果是否为真,它都会同时运行functionA和functionB。
是肯定它会执行function A()并且如果它将返回true,那么function B()将不会运行,您将根据需要执行其他代码。
是的,如果您希望它执行两者,您将完成if(functionA() | functionB()){
请注意,只有一个垂直条
如果functionA()返回true,则java中的延迟求值将避免使用functionB()。
if(functionA() | functionB())
可以帮助您完成此机制并强制评估您的两个功能。
是的,这将完全符合您的要求。 运行functionA(),如果没有返回true运行functionB()
你应该选择Marko Topolnik的答案,他补充说。
本文探讨了Java中逻辑运算符的使用方式,特别是&&和||的行为,并解释了短路评估如何影响函数调用的顺序。通过示例代码展示了如何利用这些特性来优化条件判断。
6263

被折叠的 条评论
为什么被折叠?



