比较运算符

image.png

  • < >= <= :只能使用在数值类型的数据之间。

  • == 和 !=: 不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间。
  • 80语法错误:从左到右运算为:boolean与int型的比较
    1. int i = 10;
    2. int j = 20;
    3. System.out.println(i == j);//false
    4. System.out.println(i = j);//20

逻辑运算符

image.png
逻辑运算符操作的都是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

  • ~ 取反运算

正数取反,各二进制码按补码各位取反
负数取反,各二进制码按补码各位取反


交换两个变量的值

  1. int num1 = 10;
  2. int num2 = 20;
  3. //方式一:定义临时变量的方式---->推荐
  4. int temp = num1;
  5. num1 = num2;
  6. num2 = temp;
  7. //方式二:好处:不用定义临时变量
  8. //弊端:相加操作可能超出存储范围 、有局限性:只能适用于数值类型
  9. num1 = num1 + num2;
  10. num2 = num1 - num2;
  11. num1 = num1 - num2;
  12. //方式三:使用位运算符
  13. 有局限性:只能适用于数值类型
  14. num1 = num1 ^ num2;
  15. num2 = num1 ^ num2;//原num1
  16. num1 = num1 ^ num2;//异或结果^原num1=原num2