Java运算符优先级案例如何记

wen java案例 26

本文目录导读:

Java运算符优先级案例如何记

  1. 简化版口诀(只需记这 7 级)
  2. 90% 的人会搞错的 3 个特例(重点)
  3. 真正实用的建议(而不是背诵)
  4. 终极记忆法(一句话总结)

记住Java运算符优先级,其实不需要死记硬背整个表格。核心技巧是:记特例 + 用括号

对于99%的日常开发场景,你只需要记住下面这张简化口诀表,其他遇到不确定的,一律加括号(),代码可读性更高,也不容易出错。

简化版口诀(只需记这 7 级)

你可以按从高到低的顺序记这个顺口溜(括弧里是运算符):

一自、二乘、三加、四移、五关、六等、七逻

展开解释:

  1. 一自(最高): (自增), (自减), (逻辑非)
  2. 二乘: (乘), (除), (取余)
  3. 三加: (加), (减)
  4. 四移<< (左移), >> (右移), >>> (无符号右移)
  5. 五关< > <= >= instanceof (关系比较)
  6. 六等: (判断相等) 注意: 这比关系比较低一级,但比赋值高。
  7. 七逻(最低)&& (逻辑与), (逻辑或)

特别说明:

  • 赋值运算符 (, 等) 优先级最低,比逻辑或还低,a = b && c 永远先算 b && c
  • 三目运算符 () 优先级只比赋值高一点,也很低。

90% 的人会搞错的 3 个特例(重点)

很多笔试题或者复杂表达式容易错,就错在这几个地方:

自增/自减与点号(.)的优先级

// 易错点: obj.x++ 是先取x还是先取obj?
// 规则: 点号(.) > 自增(++)
int[] arr = {1, 2};
int index = 0;
// 下面这句:先取 arr[0] = 1,index自增变成1
int value = arr[index++]; 
System.out.println(value); // 输出 1 (不是2)
System.out.println(index); // 输出 1 (自增生效)

记忆方法: 和 永远优先级最高(仅次于括号)。

移位与加减

// 易错点: 1 << 2 + 3 是等于 (1<<2)+3 还是 1<<(2+3)?
// 规则: 加法(+) > 移位(<<)
int a = 1 << 2 + 3;  
// 实际运算: 1 << (2+3) = 1 << 5 = 32
// 而不是:(1<<2) + 3 = 4+3=7

记忆方法: 四移是第4级,三加是第3级(更高),所以加、减先算。

比较与等于

// 易错点: 关系比较(< >) 高于 等于(== !=)
int a = 5;
int b = 6;
boolean result = a > b == false;  
// 实际运算:先算 a > b = false,再算 false == false = true
// 而不是: a > (b == false) 这种无意义比较
System.out.println(result); // true

记忆方法: “五关”排在“六等”前面。


真正实用的建议(而不是背诵)

比起记住整个表格,更重要的习惯是:

  1. 当你需要混合使用多个运算符时,能用括号就用括号。 这不是能力弱,而是代码清晰、避免坑。

    • a + (b << c)a + b << c 好一万倍。
    • (a || b) && ca || b && c 好一万倍。
  2. 如果代码需要你思考 3 秒以上才能确定优先级说明可读性差。 拆分成多行或加括号。

  3. 不用记 & (按位与、或、异或)的优先级。 平时几乎不用,用时直接加括号。

终极记忆法(一句话总结)

单目 > 算术 > 移位 > 比较 > 等号 > 逻辑 > 赋值

或者更形象的:

“自己(自增)先算,然后算数,接着移位,再比大小,再看等于,最后逻辑判断,赋值收尾。”

抱歉,评论功能暂时关闭!