Java 使用括号和逻辑运算符有什么区别?
我得到了不同的结果:-1如果我使用括号,1如果我不使用括号 对于测试用例“30/10/2019”,如果我在下一行中使用括号,我得到-1,如果我不使用括号,得到1:Java 使用括号和逻辑运算符有什么区别?,java,logical-operators,parentheses,Java,Logical Operators,Parentheses,我得到了不同的结果:-1如果我使用括号,1如果我不使用括号 对于测试用例“30/10/2019”,如果我在下一行中使用括号,我得到-1,如果我不使用括号,得到1: else if((mm==1||mm==3||mm==5||mm==7||mm==8||mm==10||mm==12) && mm<13 && mm>0 && dd>0 && dd<32) return 1; else if(mm==1||mm=
else if((mm==1||mm==3||mm==5||mm==7||mm==8||mm==10||mm==12) && mm<13 && mm>0 && dd>0 && dd<32) return 1;
else if(mm==1||mm==3||mm==5||mm==7||mm==8||mm==10||mm==12 && mm<13 && mm>0 && dd>0 && dd<32) return 1;
else如果((mm==1 | mm==3 | mm==5 | mm==7 | mm==8 | mm==10 | mm==12)&&mm0&&dd0&&dd0&&dd0&&dd0&&dd0&&dd括号决定了这些布尔值的解析顺序。并且约束比或更强。在您的情况下,要求:
mm==12 && mm<13
mm==12&&mm考虑这个例子
INTA=5;
System.out.println((a==5 | | a==10)和&a==8 | | a==9);//false
//计算结果为true&&false | | false,该值为false
System.out.println(a==5 | | a==10&&a==8 | | a==9);//true
//计算为真| |假&&false&&false
//第一个是真的,赢是因为后面跟着一个| | |所以整个
//表达式的计算结果为true。
如果使用a和b,则a和b都必须true
才能使语句true
使用a | | b
时,只有a
和b
中的一个必须为true
这也适用于分组表达式
如果一个表达式为true
而另一个表达式为false
,则&
的完整表达式为false
,而|
的完整表达式为true。这些运算符从左到右工作,因此您需要进行适当的分组,就像算术表达式一样
最好的建议是始终使用括号来确保表达式的正确计算。它将执行以下操作(以最高优先顺序):
- 括号
()
- 不是
!
- 和
&&
- 或
| |
至于另一个,它将评估mm0&&dd>0&&dd与任何运算符(1+2)*3==9
和1+2*3==7
mm==12 && mm<13
else if((mm==1||mm==3||mm==5||mm==7||mm==8||mm==10||mm==12) && mm<13 && mm>0 && dd>0 && dd<32)
return 1;
else if(mm==1||mm==3||mm==5||mm==7||mm==8||mm==10||mm==12 && mm<13 && mm>0 && dd>0 && dd<32)
return 1;