Java &&逻辑运算符功能
在所有这些场景中Java &&逻辑运算符功能,java,operators,Java,Operators,在所有这些场景中 class BoolArray { boolean [] b = new boolean[3]; int count = 0; void set(int i) { b[i] = true; ++count; } public static void main(String [] args) { BoolArray ba = new BoolArray();
class BoolArray {
boolean [] b = new boolean[3];
int count = 0;
void set(int i)
{
b[i] = true;
++count;
}
public static void main(String [] args)
{
BoolArray ba = new BoolArray();
ba.set(0);
ba.set(2);
ba.test();
}
void test()
{
if ( b[0] && b[1] | b[2] )
count++;
if ( b[1] && b[(++count - 2)] )
count += 7;
System.out.println("count = " + count);
}
}
当代码到达if块内部时,&&'的短路逻辑为什么不工作
还请解释逻辑运算符的执行顺序
为什么“&&”的短路逻辑不能像代码那样工作
到达if块内部
短路逻辑工作正常。在进入第二条if语句之前,count是3,它不会正确地处理++计数并将其保留为3
还请解释逻辑运算符的执行顺序
:
按位和&
位异或^
按位包含或|
逻辑与&&
逻辑或| |为什么“&&”的短路逻辑不起作用-我可以向您保证它按预期工作。然而,实际的期望可能与您的期望不同。您希望发生什么而不是正在发生什么?正如您的代码和google上的第一个结果所示,顺序是先&&然后| |。快捷方式不会更改布尔逻辑的结果。您希望代码做什么?你的代码实际上是做什么的?i、 e.你期望什么样的产出,你得到什么样的产出?你的代码比证明你的问题所需要的要复杂得多-你能把你的代码简化成一个相关的吗:除非你认为是这样,请阅读并相应地强化你的问题。您希望我们花时间帮助您解决问题,因此请您对这里得到的反馈作出反应。
if ( b[0] && b[1] | b[2] )
if ( b[1] && b[0] || b[2] )
if ( b[1] && b[0] || b[2] )