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);
运行结果
"|" 与" || " 相同与不同
相同:
- | 与 || 的运算结果相同
- 当符号左边是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));
运行结果
※你能否写出最高效的2 * 8的实现方式?
答案:2 << 3 或 8 << 1
【特别说明的】
- 位运算符操作的都是整型的数据
<<
:在一定范围内,每向左移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.获取三个数的最大值
【特别说明的】
- 说明
① 条件表达式的结果为boolean类型
② 根据条件表达式真或假,决定执行表达式1,还是表达式2.
如果表达式为true,则执行表达式1。
如果表达式为false,则执行表达式2。
③ 表达式1 和表达式2要求是一致的。
④ 三元运算符可以嵌套使用 - 凡是可以使用三元运算符的地方,都可以改写为if-else
反之,不成立。 - 如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简洁、执行效率高。