Java 编程中的运算符探寻

Java 编程中的运算符探寻 🚀

Java 运算符是表达式计算的核心,掌握它们能让你写出高效、清晰的代码,避免优先级陷阱。本文从基础到进阶,带你全面探寻 Java 运算符(基于 Java 21/23 最新特性,2026 年仍适用)。

1. 运算符分类总览

Java 运算符大致分为以下几类:

类别运算符示例作用说明
算术运算符+ - * / %加减乘除取余
一元运算符+ - ++ -- ! ~正负、自增自减、逻辑非、按位非
赋值运算符= += -= *= /= %= &= ^= |= <<= >>= >>>=赋值及复合赋值
关系(比较)运算符== != > < >= <= instanceof比较大小、相等、类型检查
逻辑运算符&& || !短路与、短路或、逻辑非
位运算符& | ^ ~ << >> >>>按位与、或、异或、非、移位
条件(三元)运算符? :条件表达式
其他. [] () -> ::成员访问、数组、方法引用等

注意:Java 不支持运算符重载(C++ 支持)。+ 对 String 是特殊处理(拼接),不是重载。

2. 运算符优先级表(核心!强烈建议收藏)

优先级从高到低(数字越小优先级越高),同一优先级按结合性(左结合或右结合)计算。括号 () 永远最高。

优先级运算符结合性说明
1() [] .(方法调用、数组、成员访问)左→右最高
2++ --(后缀)左→右后自增自减
3++ -- + - ! ~(前缀)右←左前自增自减、正负、逻辑非、按位非
4* / %左→右乘除取余
5+ -左→右加减(或字符串拼接)
6<< >> >>>左→右移位运算
7< <= > >= instanceof左→右关系比较、类型判断
8== !=左→右相等性判断
9&左→右按位与(也可用于布尔)
10^左→右按位异或
11|左→右按位或
12&&左→右逻辑与(短路)
13||左→右逻辑或(短路)
14? :右←左三元条件
15= += -= *= /= %= &= ^= |= <<= >>= >>>=右←左赋值(最低)

记忆技巧

  • 单目 > 算术 > 移位 > 关系 > 相等 > 位 > 逻辑 > 三元 > 赋值
  • 逻辑运算符优先级:! > && > ||
  • 位运算优先级高于逻辑运算符(& > &&

经典陷阱示例

int x = 5;
int y = 10;
boolean result = x > 3 &amp;&amp; y++ > 10;  // y++ 会执行吗?(短路后不执行)
System.out.println(y);  // 输出 10(短路)

3. 各类型运算符详解 + 代码示例

3.1 算术运算符

  • 注意:整数除法会截断小数(5/2 == 2
  • % 对负数结果符号与被除数一致
int a = 10, b = 3;
System.out.println(a / b);   // 3
System.out.println(a % b);   // 1
System.out.println(a + " " + b);  // 字符串拼接: "10 3"

3.2 自增自减(++ --

  • 前缀++i):先增后用
  • 后缀i++):先用后增
int i = 5;
System.out.println(++i);  // 6
System.out.println(i++);  // 6(输出后 i=7)

3.3 关系与 instanceof

  • instanceof:运行时类型检查(Java 14+ 支持模式匹配)
Object obj = "Hello";
if (obj instanceof String s) {  // Java 14+ 模式匹配
    System.out.println(s.toUpperCase());
}

3.4 逻辑运算符(短路特性!重要)

  • &&:左边 false 则右边不执行
  • ||:左边 true 则右边不执行
boolean flag = false;
int count = 0;
if (flag &amp;&amp; ++count > 0) { }  // ++count 不执行
System.out.println(count);  // 0

3.5 位运算符(面试高频)

常用于权限控制、状态标记、算法优化。

int a = 0b1010;  // 10(二进制)
int b = 0b1100;  // 12

System.out.println(a &amp; b);   // 8  (1000)
System.out.println(a | b);   // 14 (1110)
System.out.println(a ^ b);   // 6  (0110)
System.out.println(~a);      // -11(按位取反)

// 移位
System.out.println(8 &lt;&lt; 2);  // 32(左移乘4)
System.out.println(8 >> 2);  // 2
System.out.println(-8 >>> 2); // 无符号右移(高位补0)

实用技巧

  • 判断奇偶:n & 1 == 1
  • 交换两数(不用临时变量):a ^= b; b ^= a; a ^= b;

3.6 三元运算符(? :

int max = a > b ? a : b;
String status = score >= 60 ? "及格" : "不及格";

3.7 赋值运算符

复合赋值会自动进行类型转换(byte b = 1; b += 1; 合法)

4. 优先级与结合性常见坑点

// 坑1:位运算与逻辑混用
boolean res = 5 > 3 &amp; 4 > 2;   // &amp; 是位运算,这里对 boolean 也有效,但无短路!

 // 推荐用 &amp;&amp;

// 坑2:赋值优先级最低
int x, y, z;
x = y = z = 5;   // 右结合,从右到左赋值

建议:复杂表达式一定要加括号,提高可读性。

5. Java 特殊运算符

  • 方法引用 ::(Java 8+):list.forEach(System.out::println)
  • Lambda ->(x, y) -> x + y
  • .、数组 []、强制类型转换 (Type)

6. 最佳实践与注意事项

  • 始终用括号明确意图,避免依赖优先级记忆。
  • 短路运算符&& ||)用于性能优化和防止空指针(obj != null && obj.method())。
  • 位运算适合高性能场景(如游戏、加密、权限)。
  • 避免在生产代码中使用复杂位运算,除非有清晰注释。
  • Java 21+:记录类(Record)、模式匹配等让 instanceof 更强大。
  • 调试技巧:用 IDE(如 IntelliJ)查看表达式求值顺序。

总结口诀

单目算术移位关,关系相等位在先;
逻辑三元赋值后,括号永远最优先!

掌握运算符后,你的 Java 表达式会更优雅,面试中“运算符优先级”题也能轻松应对。


想继续深入吗?
回复以下任意内容,我立刻带你探索:

  • “位运算 20 道实战题 + 权限控制示例”
  • “运算符优先级 15 道经典面试题(带解析)”
  • “Java 8+ 新特性中的运算符(Lambda、::、模式匹配)”
  • “与 C++/Python 运算符对比”
  • “手写一个位运算实现权限管理系统小项目”
  • “表达式求值完整练习”

或者直接说:“给我运算符综合练习题 10 道”。

有疑问随时问,我们把 Java 基础运算符彻底玩透!💪

文章已创建 5130

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部