核心内容摘要
三年片观看免费观看大全最新资源
重阳来我们把Java 操作符这个“最容易被低估却最常坑人”的基础彻底吃透。
重点覆盖分类 优先级差异 位运算核心前置进制/原码反码补码 Java vs C 关键对比。
目标看完能手算任意表达式 面试/刷题/底层代码不再慌。
Java 操作符完整分类2026 年视角JDK 21 无大变化优先级组从高到低操作符结合性说明 / 常见坑点1() [] . new ::左→右最高括号最强2expr expr–左→右后置自增/自减3expr --expr - ! ~ (type)右→左前置 取负 逻辑非 按位取反 强制转换4* / %左→右乘除取模5 -左→右加减 还能字符串拼接6 左→右位移 是 Java 独有7 instanceof左→右关系 类型判断8 !左→右相等对象比较引用值类型比较值9左→右按位与也可用于 boolean 逻辑与10^左→右按位异或11左→右12左→右短路逻辑与1314? :右→左三元运算符15 - * / % ^ 右→左最容易错的优先级记忆口诀前6个最重要“单目算术位移乘除加减位移关系等位与异或或逻辑短路三目赋值”常见陷阱a b c→ 先算b c再a 结果因为 优先级高于 -5 1vs-5 1后面详解i i i;未定义行为千万别写
位运算前置原码、反码、补码必懂Java 中所有整数byte/short/int/long一律用补码表示。
概念正数示例 (以 8 bit 为例)负数示例 (-5, 8 bit)特点 / 记忆法原码5 →
→ 10000101最高位是符号位0正1负其余是绝对值反码5 →
→ 11111010符号位不变其余取反正数反码原码负数符号位不变其余取反补码5 →
→ 11111011反码1计算机实际存储的就是补码关键性质背下来正数的原码 反码 补码负数的补码 反码 1补码的补码 原码绕一圈回来~x按位取反其实是-x-1补码世界里的数学性质例~5 -6因为 00000101 → 11111010 → 补码转十进制 -6为什么用补码加减法统一不用区分正负数电路不同0 有唯一表示不像原码有 0 和 -
Java 位运算符详解 与 C 的核心差异操作符含义Java 行为int 示例C/C 对应行为对比关键差异点按位与5 3 1 (0101 0011
完全相同纯位运算无按位或53 7^按位异或5 ^ 3 6相同无~按位取反一元~5 -6相同但 C 中 int 可能是 32/64 bit 实现依赖无大差异算术左移带符号无差异5 2
2 -20相同左移不影响符号位无算术右移带符号5 2
2 -2符号扩展C 中 对 signed int 是实现定义多数编译器算术右移Java 强制算术右移C 可能逻辑右移老编译器逻辑右移无符号5 2
2 1073741822C/C 没有 右移 signed 通常算术unsigned 才逻辑最大差异Java 独有解决负数右移问题负数 演示非常重要inta-5;// 二进制1111 1111 1111 1111 1111 1111 1111 1011System.out.println(a
;// -2 1111 1111 ... 1110 符号扩展System.out.println(a
;// 1073741822 0011 1111 ... 1110 最高位补0C 语言里想实现无符号右移只能把变量转为 unsigned int 或 unsigned long。
常见位运算经典用法刷题/面试必备用途表达式示例说明判断奇偶(n
1最快判断奇数取绝对值不使用 Math(n ^ (n
) - (n
经典位运算取 abs仅 int/long 有效交换两数不使用临时变量a ^ b; b ^ a; a ^ b;经典面试题求 2 的幂次方n (n-
0 n 0判断是否 2 的幂统计二进制 1 的个数n (n-
循环直到 n0Brian Kernighan 算法最快取低 n 位x ((1 n) -
掩码取低 n 位设置第 k 位为 1x (1 k)设置第 k 位为 0x ~(1 k)—翻转第 k 位x ^ (1 k)—
快速自测题建议现在算一算-8 3 的结果是十进制-8 3 的结果是注意 int 32 位表达式 8 (-
7 的值优先级陷阱~0 的值是多少如何用位运算实现 ×8不写 *答案稍后可以问我或者自己 System.out.println() 验证。
重阳位运算 补码 优先级这三块吃透后后面集合、IO、多线程里的位标志、哈希计算、布隆过滤器、权限校验等都会轻松很多。
现在你最想看更多经典位运算面试题手写几个位运算算法继续下一节比如自动类型转换 强制转换的坑还是有具体代码想让我帮你分析为什么结果是这样随时说我们继续冲