算术运算符
基本算术运算符
| 运算符 | 名称 | 示例 |
|---|---|---|
| + | 加 | 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 += b | a = a + b |
| -= | a -= b | a = a - b |
| *= | a *= b | a = a * b |
| /= | a /= b | a = a / b |
| %= | a %= b | a = 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 = 1Math 类常用方法
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