Skip to content

算术运算符

基本算术运算符

运算符名称示例
+a + b
-a - b
*a * b
/a / b
%取模a % b
java
int a = 10;
int b = 3;

System.out.println("a + b = " + (a + b));  // 13
System.out.println("a - b = " + (a - b));  // 7
System.out.println("a * b = " + (a * b));  // 30
System.out.println("a / b = " + (a / b));  // 3(整数除法)
System.out.println("a % b = " + (a % b));  // 1

整数除法 vs 浮点除法

整数除法向下取整,浮点除法需要转换类型:

java
int a = 10;
int b = 3;

// 整数除法(向下取整)
System.out.println(a / b);  // 3,不是 3.33

// 浮点除法
System.out.println((double) a / b);  // 3.333...

取模运算

% 返回除法的余数:17 % 5 = 2(因为 17 = 5 × 3 + 2)

常见应用

java
// 判断奇偶
int num = 7;
if (num % 2 == 0) {
    System.out.println("偶数");
} else {
    System.out.println("奇数");
}

// 循环遍历数组
int[] arr = {1, 2, 3, 4, 5};
for (int i = 0; i < 10; i++) {
    int index = i % arr.length;
    System.out.println(arr[index]);  // 循环打印
}

// 格式化输出(每3个一行)
for (int i = 1; i <= 9; i++) {
    System.out.print(i + " ");
    if (i % 3 == 0) System.out.println();
}

一元运算符

运算符名称说明
+正号表示正数
-负号表示负数
++自增变量值加 1
--自减变量值减 1

自增自减的区别

java
int a = 5;

// 前缀:先加减,后使用
int b = ++a;  // a = 6, b = 6

// 后缀:先使用,后加减
int c = 5;
int d = c++;  // d = 5, c = 6

实际输出验证:

java
int x = 5;
System.out.println("++x = " + ++x);  // 6(先加后输出)
System.out.println("x = " + x);       // 6

int y = 5;
System.out.println("y++ = " + y++);  // 5(先输出后加)
System.out.println("y = " + y);       // 6

避免在表达式中混合使用自增,推荐单独写:

java
// ❌ 复杂表达式中的自增
int c = a + ++a + a++;

// ✅ 推荐:单独使用
a++;
b++;
int c = a + b;

复合赋值运算符

运算符示例等价于
+=a += ba = a + b
-=a -= ba = a - b
*=a *= ba = a * b
/=a /= ba = a / b
%=a %= ba = a % b
java
int a = 10;
a += 5;   // a = 15
a -= 3;   // a = 12
a *= 2;   // a = 24
a /= 4;   // a = 6
a %= 5;   // a = 1

Math 类常用方法

java
// 绝对值、最大值、最小值
Math.abs(-5);        // 5
Math.max(3, 5);     // 5
Math.min(3, 5);     // 3

// 幂运算
Math.pow(2, 3);     // 8.0
Math.sqrt(16);      // 4.0

// 舍入
Math.round(3.6);    // 4(四舍五入)
Math.floor(3.6);    // 3.0(向下取整)
Math.ceil(3.6);     // 4.0(向上取整)

// 随机数 [0, 1)
Math.random();

运算优先级

优先级运算符说明
1++ --自增自减
2* / %乘除取模
3+ -加减
4=赋值
java
int result = 2 + 3 * 4;     // 14(先乘后加)
int result2 = (2 + 3) * 4; // 20(括号优先)

两个容易踩的坑

整数溢出

java
int max = Integer.MAX_VALUE;
System.out.println(max + 1);   // -2147483648(溢出)
System.out.println(max + 2);   // -2147483647

// 解决:使用 long
long safe = (long) max + 1;  // 2147483648

浮点数精度

java
// 精度问题
System.out.println(0.1 + 0.2);  // 0.30000000000000004

// 解决:使用 BigDecimal
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
System.out.println(a.add(b));  // 0.3

基于 VitePress 构建