Java 运算系统 & 控制流

2022-05-17  本文已影响0人  bowen_wu

运算系统

% 取余

5 % 2 = 1
-5 % 2 = -1

// 判断一个整数是不是奇数
public static boolean isOdd (int number) {
    // return number % 2 == 1; // 没有考虑负值的情况
    return number % 2 != 0;
}

public static boolean isOdd (int number) {
  return number & 1;
}

位运算

按位取反 ~

1's complement => 反码

~3 == -4

补码

2's complement => 补码 = 按位取反之后 +1 => 使用补码来表示相应的负数

可以使用相同的硬件电路同时表示 + 和 - => 4 的补码就是 -4 => 计算机中 4 -> -4

4 => 00000100
// 1. 按位取反 => 11111011
// 2. +1 得到 -4
-4 => 11111100

亦或 ^

不进位的加法

x ^ x == 0;
x ^ 0 == x;

左移 <<

z 进制中的 x << y => x * (z ^ y)

5 << 1 == 10; // 5 * (2 ^ 1)
5 << 2 == 20; // 5 * (2 ^ 2)
5 << 3 == 40; // 5 * (2 ^ 3)

右移 >>

z 进制中的 x >> y => (x >= z ^ y) ? (x / (z ^ y)) : 0

-4 // 11111011
-4 >> 1 == -2 // 符号位补之前的符号,缺位补 0 -> 11111101 -> 00000010 == 2
-4 >>> 1 // 缺位补 0 -> 01111101

作用

  1. 掩码 -> 设置使用 |,读取使用 &
  2. 清除 A 位 -> Flag & (~A)

运算符优先级

  1. 乘除高于加减
  2. 其他全部加括号

控制流

for & for each 循环

任何接口实现了 Iterable 就是可以使用 for each 循环访问其中的元素

break & continue

switch

switch 具有穿透性。哪些东西可以 switch

知识点

  1. 字符串中的 +
    • String 不可变
    • StringBuilder -> 在一块内存上面不停的连接新的东西,可以避免频繁的创建零碎的不可变的 String 对象带来的内存开销
    • 使用字符串的 + 时 -> 引用数据类型会调用 toString() 方法,原生数据类型会使用对应的表示
    • 当连接一个很长的字符串 + 时 -> JDK 内部会自动的转换成 StringBuilder 调用,以减轻内存开销,提高性能
上一篇 下一篇

猜你喜欢

热点阅读