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.