1.前言
- 最近遇到了使用|和||与&和&&的场景,有点模糊不清,现在这里书写下来记录。
2.先上代码
public class andOrTest {
static int a = 0;
static int b = 0;
public static void main(String arg[]) {
//在这里进行配置
doubleOr();
}
private static void printlnAndZero() {
System.out.println("a:" + a + "," + "b:" + b);
a = 0;
b = 0;
}
private static void justPrintLn() {
System.out.println("a:" + a + "," + "b:" + b);
}
private static void zero() {
a = 0;
b = 0;
}
private static void justAnd() {
// true false
if (((a = 1) > 0) & ((b = -1) > 0)) {
justPrintLn();
}
printlnAndZero();
// true true
if (((a = 1) > 0) & ((b = -1) < 0)) {
justPrintLn();
}
printlnAndZero();
// false false
if (((a = 1) < 0) & ((b = -1) > 0)) {
justPrintLn();
}
printlnAndZero();
// false true
if (((a = 1) < 0) & ((b = -1) < 0)) {
justPrintLn();
}
printlnAndZero();
}
private static void justOr() {
// true false
if (((a = 1) > 0) | ((b = -1) > 0)) {
justPrintLn();
}
printlnAndZero();
// true true
if (((a = 1) > 0) | ((b = -1) < 0)) {
justPrintLn();
}
printlnAndZero();
// false false
if (((a = 1) < 0) | ((b = -1) > 0)) {
justPrintLn();
}
printlnAndZero();
// false true
if (((a = 1) < 0) | ((b = -1) < 0)) {
justPrintLn();
}
printlnAndZero();
zero();
}
private static void doubleAnd() {
// true false
if (((a = 1) > 0) && ((b = -1) > 0)) {
justPrintLn();
}
printlnAndZero();
// true true
if (((a = 1) > 0) && ((b = -1) < 0)) {
justPrintLn();
}
printlnAndZero();
// false false
if (((a = 1) < 0) && ((b = -1) > 0)) {
justPrintLn();
}
printlnAndZero();
// false true
if (((a = 1) < 0) && ((b = -1) < 0)) {
justPrintLn();
}
printlnAndZero();
zero();
}
private static void doubleOr() {
// true false
if (((a = 1) > 0) || ((b = -1) > 0)) {
justPrintLn();
}
printlnAndZero();
// true true
if (((a = 1) > 0) || ((b = -1) < 0)) {
justPrintLn();
}
printlnAndZero();
// false false
if (((a = 1) < 0) || ((b = -1) > 0)) {
justPrintLn();
}
printlnAndZero();
// false true
if (((a = 1) < 0) || ((b = -1) < 0)) {
justPrintLn();
}
printlnAndZero();
zero();
}
}
3.输出结果
3.1 &
justAnd()
a:1,b:-1
a:1,b:-1
a:1,b:-1//这次是全为true的输出
a:1,b:-1
a:1,b:-1
3.2 |
jsutOr()
a:1,b:-1
a:1,b:-1//true false时的输出
a:1,b:-1
a:1,b:-1//true true时的输出
a:1,b:-1
a:1,b:-1
a:1,b:-1//false true时的输出
3.3 &&
doubleAnd()
a:1,b:-1
a:1,b:-1
a:1,b:-1//全为true的输出
a:1,b:0//当前面的判断为false时就不执行后面的操作
a:1,b:0//当前面的判断为false时就不执行后面的操作
3.4 ||
doubleOr()
a:1,b:0//当前面的判断为true时就不执行后面的操作
a:1,b:0//true false 的输出
a:1,b:0//当前面的判断为true时就不执行后面的操作
a:1,b:0//true true 的输出
a:1,b:-1
a:1,b:-1
a:1,b:-1//false true的输出
4.总结
- & | 是逻辑与 、逻辑或操作,即先确定左右的布尔值,然后再做判断。
- && ||是短路与、短路或操作,即先确定左边的布尔值,如果可以通过,就不确定右边的布尔值。
网友评论