JAVA 如果 ||(OR) 以及 && (AND) 放在相同的 if 语句中



目前我正在做一个小的个人项目来帮助自己学习编码。我想知道是否可以将不同类型的逻辑运算符组合在一个if语句中,以供将来参考。

例如,如果我有

if (n == 0 || n == 1 && m == 0 || m == 1) {
doSomething();
}

它会检查左侧的任一部分是否为真,然后检查右侧的任一部分为真,还是会做类似于检查中间两个是否都为真的事情?

使用括号会改变什么吗例如

if ((n == 0 || n == 1) && (m == 0 || m == 1)) {
doSomething();
}

编辑:根据一个建议,我尝试了一下,但当我放入三个变量时,它开始表现得很奇怪这是我的测试:

int n = 1;
int m = 1;
int o = 1;
if (n == 0 || n == 1 && m == 0 || m == 1 && o == 0 || o == 1) {
System.out.println("True");
}
else {
System.out.println("False");
}
if ((n == 0 || n == 1) && (m == 0 || m == 1) && (o == 0 || o == 1)) {
System.out.println("True");
}
else {
System.out.println("False");
}

如果它们都是1或0,则它们都计算为true;如果n或m不是1或0则顶部计算为true,而底部不计算。

但是,如果o不是0或1,则这两个值都为false。我发现括号确实有区别,但我不太清楚它为什么会这样

&&的优先级高于||,因此n == 0 || n == 1 && m == 0 || m == 1等于n == 0 || (n == 1 && m == 0) || m == 1。您可以在这里查看优先级表。

相关内容

  • 没有找到相关文章

最新更新