Java中的运算符可分为以下六种:
算术运算符 赋值运算符 比较运算符逻辑运算符 位运算符 三元运算符 本篇总结后三种运算符,前三种运算符总结请点击:传送门。

1.逻辑运算符

& && | || ! ^"&“与”&&"相同与不同
相同:

  • & 与 && 的运算结果相同;
  • 当符号左边是true时,二者都会执行符号右边的运算

不同:

  • 当符号左边是false时,&继续执行符号右边的运算。&&不再执行符号右边的运算。

开发中,推荐使用&&
【典型代码】

boolean b1 = true;
	b1 = false;
	int num1 = 10;
	if(b1 & (num1++ > 0)){
		System.out.println("我现在在北京");
	}else{
		System.out.println("我现在在南京");
	}

	System.out.println("num1 = " + num1);


	boolean b2 = true;
	b2 = false;
	int num2 = 10;
	if(b2 && (num2++ > 0)){
		System.out.println("我现在在北京");
	}else{
		System.out.println("我现在在南京");
	}

	System.out.println("num2 = " + num2);
运行结果

Java逻辑运算的顺序是 java的逻辑运算符有哪些_System


"|" 与" || " 相同与不同

相同:

  • | 与 || 的运算结果相同
  • 当符号左边是false时,二者都会执行符号右边的运算

不同:

  • 当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算

开发中,推荐使用||

boolean b3 = false;
		b3 = true;
		int num3 = 10;
		if(b3 | (num3++ > 0)){
			System.out.println("我现在在北京");
		}else{
			System.out.println("我现在在南京");
		}
		System.out.println("num3 = " + num3);


		boolean b4 = false;
		b4 = true;
		int num4 = 10;
		if(b4 || (num4++ > 0)){
			System.out.println("我现在在北京");
		}else{
			System.out.println("我现在在南京");
		}
		System.out.println("num4 = " + num4);

【特别说明的】

  • 逻辑运算符操作的都是boolean类型的变量。而且结果也是boolean类型

2.位运算符

<< >> >>> & | ^ ~ 【典型代码】

int i = 21;
		i = -21;
		System.out.println("i << 2 :" + (i << 2));
		System.out.println("i << 3 :" + (i << 3));
		System.out.println("i << 27 :" + (i << 27));

		int m = 12;
		int n = 5;
		System.out.println("m & n :" + (m & n));
		System.out.println("m | n :" + (m | n));
		System.out.println("m ^ n :" + (m ^ n));
运行结果

Java逻辑运算的顺序是 java的逻辑运算符有哪些_System_02


※你能否写出最高效的2 * 8的实现方式?

答案:2 << 3 或 8 << 1

【特别说明的】

  1. 位运算符操作的都是整型的数据
  2. <<:在一定范围内,每向左移1位,相当于 * 2
    >>:在一定范围内,每向右移1位,相当于 / 2

典型题目:
1.交换两个变量的值。
2.实现60的二进制到十六进制的转换

3.三元运算符

(条件表达式)? 表达式1 : 表达式2 【典型代码】
1.获取两个整数的较大值

int a = 1;
int b = 5;
System.out.println("最大数是:"+(a > b? a:b);

2.获取三个数的最大值
【特别说明的】

  1. 说明
    ① 条件表达式的结果为boolean类型
    ② 根据条件表达式真或假,决定执行表达式1,还是表达式2.
    如果表达式为true,则执行表达式1。
    如果表达式为false,则执行表达式2。
    ③ 表达式1 和表达式2要求是一致的。
    ④ 三元运算符可以嵌套使用
  2. 凡是可以使用三元运算符的地方,都可以改写为if-else
    反之,不成立。
  3. 如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简洁、执行效率高。