Java算术运算符 #
一、算术运算符概述 #
算术运算符用于执行数学运算,是最常用的运算符类型。
| 运算符 | 说明 | 示例 |
|---|---|---|
| + | 加法 | 5 + 3 = 8 |
| - | 减法 | 5 - 3 = 2 |
| * | 乘法 | 5 * 3 = 15 |
| / | 除法 | 5 / 3 = 1 |
| % | 取余 | 5 % 3 = 2 |
| ++ | 自增 | i++ 或 ++i |
| – | 自减 | i-- 或 --i |
二、基本算术运算 #
2.1 加减乘除 #
java
int a = 10;
int 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(取余)
2.2 整数除法 #
java
// 整数除法:结果为整数(截断小数部分)
int result1 = 7 / 3; // 2
int result2 = 7 / 2; // 3
// 浮点除法:至少一个操作数为浮点数
double result3 = 7.0 / 3; // 2.333...
double result4 = 7 / 3.0; // 2.333...
double result5 = (double) 7 / 3; // 2.333...
// 注意
System.out.println(1 / 2); // 0
System.out.println(1.0 / 2); // 0.5
2.3 取余运算 #
java
System.out.println(10 % 3); // 1
System.out.println(10 % -3); // 1(结果符号与被除数相同)
System.out.println(-10 % 3); // -1
System.out.println(-10 % -3); // -1
// 应用:判断奇偶
int num = 7;
if (num % 2 == 0) {
System.out.println("偶数");
} else {
System.out.println("奇数");
}
// 应用:获取个位数
int n = 123;
int lastDigit = n % 10; // 3
// 应用:循环索引
int index = (i + 1) % array.length;
三、自增自减运算符 #
3.1 基本用法 #
java
int i = 5;
// 自增
i++; // i = 6
++i; // i = 7
// 自减
i--; // i = 6
--i; // i = 5
3.2 前置与后置的区别 #
java
int a = 5;
// 后置:先使用,后自增
int b = a++; // b = 5, a = 6
// 等价于:
// int b = a;
// a = a + 1;
int c = 5;
// 前置:先自增,后使用
int d = ++c; // d = 6, c = 6
// 等价于:
// c = c + 1;
// int d = c;
3.3 表达式中的行为 #
java
int x = 5;
int y = x++ + ++x;
// 执行过程:
// x++: x = 5, 表达式值为5, x变为6
// ++x: x变为7, 表达式值为7
// y = 5 + 7 = 12
System.out.println(x); // 7
System.out.println(y); // 12
// 建议:避免复杂表达式中的自增自减
// 拆分为多行更清晰
int a = 5;
int temp1 = a++;
int temp2 = ++a;
int result = temp1 + temp2;
四、运算符优先级 #
算术运算符优先级从高到低:
++、--(前置)*、/、%+、-
java
int result = 2 + 3 * 4; // 14,不是20
int result2 = (2 + 3) * 4; // 20,使用括号改变优先级
int a = 5;
int b = a++ + a * 2;
// a++: 5, a变为6
// a * 2: 6 * 2 = 12
// b = 5 + 12 = 17
五、特殊用法 #
5.1 字符串连接 #
+ 运算符可以连接字符串:
java
String s1 = "Hello" + " " + "World"; // "Hello World"
String s2 = "年龄: " + 25; // "年龄: 25"
int a = 10;
int b = 20;
System.out.println("a + b = " + a + b); // "a + b = 1020"
System.out.println("a + b = " + (a + b)); // "a + b = 30"
5.2 字符运算 #
java
char c1 = 'A';
char c2 = 'B';
// 字符参与运算时,使用其Unicode编码
System.out.println(c1 + 1); // 66
System.out.println(c2 - c1); // 1
// 获取字符
char next = (char) (c1 + 1); // 'B'
5.3 复合赋值运算符 #
java
int a = 10;
a += 5; // a = a + 5; → 15
a -= 3; // a = a - 3; → 12
a *= 2; // a = a * 2; → 24
a /= 4; // a = a / 4; → 6
a %= 4; // a = a % 4; → 2
// 复合赋值会自动进行类型转换
byte b = 10;
// b = b + 1; // 错误:需要强制转换
b += 1; // 正确:自动转换
六、数学运算示例 #
6.1 计算圆的面积和周长 #
java
double radius = 5.0;
double area = Math.PI * radius * radius;
double circumference = 2 * Math.PI * radius;
System.out.println("面积: " + area);
System.out.println("周长: " + circumference);
6.2 温度转换 #
java
// 摄氏度转华氏度
double celsius = 25;
double fahrenheit = celsius * 9 / 5 + 32;
System.out.println(fahrenheit); // 77.0
// 华氏度转摄氏度
double f = 77;
double c = (f - 32) * 5 / 9;
System.out.println(c); // 25.0
6.3 数字分解 #
java
int num = 1234;
int thousands = num / 1000; // 1
int hundreds = num / 100 % 10; // 2
int tens = num / 10 % 10; // 3
int ones = num % 10; // 4
System.out.printf("千位: %d, 百位: %d, 十位: %d, 个位: %d%n",
thousands, hundreds, tens, ones);
七、注意事项 #
7.1 整数溢出 #
java
int max = Integer.MAX_VALUE;
int overflow = max + 1; // -2147483648(溢出)
// 使用long避免溢出
long safe = (long) max + 1; // 2147483648
// 或使用Math.addExact检测溢出
try {
int result = Math.addExact(max, 1);
} catch (ArithmeticException e) {
System.out.println("溢出");
}
7.2 浮点精度 #
java
double a = 0.1 + 0.2;
System.out.println(a); // 0.30000000000000004
// 使用BigDecimal进行精确计算
import java.math.BigDecimal;
BigDecimal bd1 = new BigDecimal("0.1");
BigDecimal bd2 = new BigDecimal("0.2");
BigDecimal sum = bd1.add(bd2);
System.out.println(sum); // 0.3
7.3 除零问题 #
java
// 整数除以零:抛出异常
// int result = 10 / 0; // ArithmeticException
// 浮点数除以零:返回无穷大或NaN
double d1 = 10.0 / 0; // Infinity
double d2 = 0.0 / 0; // NaN
// 安全除法
public static int safeDivide(int a, int b) {
if (b == 0) {
return 0; // 或抛出异常
}
return a / b;
}
八、总结 #
| 运算符 | 说明 | 示例 |
|---|---|---|
| + | 加法/字符串连接 | 5 + 3 = 8 |
| - | 减法 | 5 - 3 = 2 |
| * | 乘法 | 5 * 3 = 15 |
| / | 除法 | 5 / 3 = 1 |
| % | 取余 | 5 % 3 = 2 |
| ++ | 自增 | i++ 或 ++i |
| – | 自减 | i-- 或 --i |
算术运算符要点:
- 整数除法结果为整数
- 取余结果符号与被除数相同
- 前置自增先加后用,后置自增先用后加
- 注意整数溢出和浮点精度问题
最后更新:2026-03-26