// | 和 || 的区别
// 首先我们知道 || 的最大特点是 两两比较,
// 只要其中有一个为false,结果都为false
// 接下来,我们通过以下 四种情况 开始 进行比较
false false
false true
true false
true true
首先定义一个初始变量 int i = 0;
/*if (++i == 0 | i++ == 0) {}//① false false
System.out.println(i); */ //2
/* if (++i == 0 | i++ == 1) {}//② false true
System.out.println(i); */ //2
/*if (i++ == 0 | i++ == 0) {}//③ true false
System.out.println(i); */ //2
/* if (i++ == 0 | i++ == 1) {}//④ true true
System.out.println(i); */ //2
System.out.println("---------------");
/*if (++i == 0 || i++ == 0) {}//① false false
System.out.println(i);*/ // 2
/*if (++i == 0 || i++ == 1) {}//② false true
System.out.println(i);*/ //2
/*if (i++ == 0 || i++ == 0) {}//③ true false
System.out.println(i);*/ // 1
/*if (i++ == 0 || i++ == 1) {}//④ true true
System.out.println(i);*/ // 1
System.out.println("--------------");
System.out.println("--------------");
// & 和 && 的区别
// 首先我们知道 && 的最大特点是 两两比较,只有两个均为true,结果才为true
/*if (++i == 0 & i++ == 0) {}//① false false
System.out.println(i); */ //2
/*if (++i == 0 & i++ == 1) {}//② false true
System.out.println(i); */ //2
/* if (i++ == 0 & i++ == 0) {}//③ true false
System.out.println(i); */ //2
/* if (i++ == 0 & i++ == 1) {}//④ true true
System.out.println(i); */ //2
System.out.println("---------------");
if (++i == 0 && i++ == 0) {}//① false false
System.out.println(i); // 1 i++ == 0根本没有运算
/* if (++i == 0 && i++ == 1) {}//② false true
System.out.println(i);*/ // 1
/*if (i++ == 0 && i++ == 0) {}//③ true false
System.out.println(i);*/ // 2
/*if (i++ == 0 && i++ == 1) {}//④ true true
System.out.println(i);*/ // 2
/**
* 总结 && & 以及 || | 进行布尔运算时,实现的结果都是一样的
* 但是 && 和 || 更智能
* 当若干个数进行布尔运算的时候,从左到右,
* ||: 一旦发现两两运算 || 时为true时,将结束运算,并返回true
* 而 | 无论结果如何,将会一直运算到末尾
* &&: 一旦发现两两运算 && 时为false时,将结束运算,并返回false
* 而 & 无论结果如何,将会一直运算到末尾
*
*/