java - JAVA IF 语句将如何评估 if || (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,则它们都评估为真,如果 n 或 m 不是 1 或 0,则顶部评估为 true,但底部不评估。
但是,如果 o 不是 0 或 1,它们都是假的。我发现括号确实有所作为,但我不能完全说明为什么它会这样。
解决方案
&&
then 的优先级更高||
,所以n == 0 || n == 1 && m == 0 || m == 1
equals n == 0 || (n == 1 && m == 0) || m == 1
。您可以在此处查看优先级表。
推荐阅读
- html - Backspace 无法清除 input type='email' 上的值
在电子邮件字段中 - java - 如何从输入中仅计算 4 个整数 - JAVA
- postgresql - 无法远程连接到 PostGIS docker
- swift - Swift:仅发布特定的可编码对象
- angular - 使用 Angular 的 React 风格的受控组件(绑定输入)
- nlp - 如何使用转换器模型改进代码以加快词嵌入?
- c# - SignalR KeepAlive 值“此值不得超过 DisconnectTimeout 值的 1/3”是什么意思?
- android - 后按后停止重新加载片段
- visual-studio-code - neovim vscode 替换光标下的单词
- javascript - HTML 内容在 window.location.href 中不起作用