相同点:
&& 和 & 都是双目运算符,都是进行逻辑“与”运算,同真为真,有假为假
|| 和 | 都是双目运算符,都是进行逻辑“或”运算,同假为假,有真为真
不同点:
当 && 前面条件为假时,&& 后面表达是不运行的
当 & 前面条件为假时,& 后面表达是运行的
当 || 前面条件为真时,|| 后面表达是不运行的
当 | 前面条件为真时,| 后面表达是运行的
具体解释查看以下代码:
public class Demo {
public static void main(String[] args) {
int num1 = 10;
int num2 = 1;
int num3 = 1;
// && and & “与”运算,有一个假就是假
// 当 && 前面条件为假时,&& 后面表达是不运行的
System.out.println(num1 > 10 && ++num2 > 5);
System.out.println(num2); // 没有执行自加操作,num2 = 1
// 当 & 前面条件为假时,& 后面表达是运行的
System.out.println(num1 > 10 & ++num3 > 5);
System.out.println(num3); // 执行自加操作,num3 = 2;
int result1 = 1;
int result2 = 1;
// || and | “或”运算,有一个真就是真
// 当 || 前面条件为真时,|| 后面表达是不运行的
System.out.println(num1 > 9 || ++result1 > 5);
System.out.println(result1); // 没有执行自加操作,result1 = 1
// 当 | 前面条件为假时,| 后面表达是运行的
System.out.println(num1 > 9 | ++result2 > 5);
System.out.println(result2); // 执行自加操作,result2 = 2
}
}