Skip to content

2026-08-27 · 算术、逻辑、关系、赋值、三元、位运算,每种都带代码示例。

Java 运算符

1. 算术运算符

数学计算,小学数学升级版:

java
int a = 10, b = 3;
System.out.println(a + b);  // 13  加
System.out.println(a - b);  // 7   减
System.out.println(a * b);  // 30  乘
System.out.println(a / b);  // 3   整数除法,直接截断(不是四舍五入)
System.out.println(a % b);  // 1   取模(取余数)

整数除法是截断,不是四舍五入:10 / 3 = 3,不是 3.333。想要小数,至少一个操作数是 double10.0 / 3 = 3.333...

自增自减(简写):

java
int i = 5;
i++;    // 等价于 i = i + 1,现在 i = 6
i--;    // 等价于 i = i - 1,现在 i = 5

2. 关系运算符

比较两个值,返回 truefalse

java
int a = 10, b = 20;
System.out.println(a == b);  // false  等于
System.out.println(a != b);  // true   不等于
System.out.println(a > b);   // false  大于
System.out.println(a < b);   // true   小于
System.out.println(a >= 10); // true   大于等于
System.out.println(a <= 5);  // false  小于等于

== 是比较(判断是否相等),= 是赋值(把值给变量)。初学最常混淆的就是这两个。

3. 逻辑运算符

连接多个条件:

java
int age = 25;
boolean income = true;

// && 与(两个条件都为 true 才 true)
System.out.println(age >= 18 && income);  // true

// || 或(至少一个为 true 就 true)
System.out.println(age < 18 || income);   // true

// ! 非(取反)
System.out.println(!income);  // false

短路特性(重要):

java
// && 短路:左边 false,右边直接不执行
int x = 0;
if (x != 0 && 10 / x > 2) {
    // 右边 10/x 会被执行吗?不会!因为左边已经 false 了
    // 这就是短路,防止除以零报错
}

// || 短路:左边 true,右边直接不执行

&&|| 有短路,&| 没有(不管左边结果都执行右边)。日常用 && / ||,几乎不用 & / | 做逻辑判断。

&&& 的区别:

  • &:非短路,两边都执行(但结果一样)
  • &&:短路,左边 false 后边不执行(性能更好,能防止意外错误)
  • 实际开发几乎只用 &&& 主要用在位运算里

||| 同理。

4. 赋值运算符

给变量赋值,= 最基础,复合运算符简写:

java
int a = 10;      // 基本赋值
a += 5;          // 等价于 a = a + 5,现在 a = 15
a -= 3;          // 等价于 a = a - 3,现在 a = 12
a *= 2;          // 等价于 a = a * 2,现在 a = 24
a /= 4;          // 等价于 a = a / 4,现在 a = 6
a %= 5;          // 等价于 a = a % 5,现在 a = 1

+= 等复合运算符会自动处理类型转换,比直接写 = 更安全。比如 byte b = 10; b += 5; 能编译,但 b = b + 5; 编译报错(b + 5 自动提升为 int,不能直接赋给 byte)。

5. 三元运算符

条件 ? 真值 : 假值if-else 的简写:

java
int score = 85;
String result = score >= 60 ? "及格" : "不及格";
System.out.println(result); // 及格

// 等价于:
String result2;
if (score >= 60) {
    result2 = "及格";
} else {
    result2 = "不及格";
}

条件简单时用三元,逻辑复杂时老老实实写 if-else(可读性更好)。