比较运算符
< >= <= :只能使用在数值类型的数据之间。
- == 和 !=: 不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间。
- 80
语法错误:从左到右运算为:boolean与int型的比较 int i = 10;
int j = 20;
System.out.println(i == j);//false
System.out.println(i = j);//20
逻辑运算符
逻辑运算符操作的都是boolean类型的变量,注意区别位运算符&操作的是数
逻辑与短路区别:
- 短路与&&若前一项为false,运算符右边语句将不再执行,因为运算符后无论是何值结果均为false
- 短路或||若前一项为true,运算符右边语句将不再执行,因为运算符后无论是何值结果均为true
开发中,推荐使用短路运算符
位运算符:位运算的操作数只能是整型数据
- << 左移
被移除的高位丢弃,空缺位补0。
<< :在一定范围内,每向左移1位,相当于 * 2
- >> 右移
被移位的二进制最高位是0,右移后,空缺位补0;
最高位是1,右移后,空缺位补1。
>> :在一定范围内,每向右移1位,相当于 / 2
- >>> 无符号右移
被移位二进制最高位无论是0或者是1,空缺位都用0补。
不存在<<<
- & 与运算
二进制位逐位进行&运算,只有1&1时结果是1,否则是0;
- | 或运算
二进制位逐位进行 | 运算,只有0 | 0时结果是0,否则是1;
- ^ 异或运算
对应二进制位逐位进行 ^ 运算
相同二进制位结果是0;
不相同二进制位 ^ 运算结果是1。m = a ^ b = (m ^ b) ^ b
a
- ~ 取反运算
正数取反,各二进制码按补码各位取反
负数取反,各二进制码按补码各位取反
交换两个变量的值
int num1 = 10;
int num2 = 20;
//方式一:定义临时变量的方式---->推荐
int temp = num1;
num1 = num2;
num2 = temp;
//方式二:好处:不用定义临时变量
//弊端:相加操作可能超出存储范围 、有局限性:只能适用于数值类型
num1 = num1 + num2;
num2 = num1 - num2;
num1 = num1 - num2;
//方式三:使用位运算符
有局限性:只能适用于数值类型
num1 = num1 ^ num2;
num2 = num1 ^ num2;//原num1
num1 = num1 ^ num2;//异或结果^原num1=原num2