JAVA IF 语句将如何计算 if || (OR) 和 && (AND) 放在同一个 if 语句中
JAVA How will an IF statement evaluate if || (OR) as well as && (AND) are placed in the same if statement
目前我正在做一个小的个人项目来帮助自己学习编码。
我想知道是否可以在单个 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,则它们都评估为真,如果 n 或 m 不是 1 或 0,则顶部评估为真,但底部评估为真。
然而,如果 o 不是 0 或 1,则它们都是假的。
我发现括号确实有所作为,但我不太清楚为什么会这样。
&&
的优先级高于 ||
,因此 n == 0 || n == 1 && m == 0 || m == 1
等于 n == 0 || (n == 1 && m == 0) || m == 1
。您可以检查优先级 table here.
目前我正在做一个小的个人项目来帮助自己学习编码。 我想知道是否可以在单个 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,则它们都评估为真,如果 n 或 m 不是 1 或 0,则顶部评估为真,但底部评估为真。
然而,如果 o 不是 0 或 1,则它们都是假的。 我发现括号确实有所作为,但我不太清楚为什么会这样。
&&
的优先级高于 ||
,因此 n == 0 || n == 1 && m == 0 || m == 1
等于 n == 0 || (n == 1 && m == 0) || m == 1
。您可以检查优先级 table here.