源本科技 | 码上会

Java 算数运算符

2025/12/25
23
0

算术运算是编程中最基础、最常用的操作之一。Java 提供了一套完整的算术运算符(Arithmetic Operators),用于对基本数据类型(如 intdouble 等)执行加、减、乘、除、取余等数学运算。本文将系统讲解 Java 中的五种核心算术运算符,并通过示例帮助你深入理解其用法与注意事项。


学习目标

  • 掌握 Java 中 5 种基本算术运算符的语法与功能

  • 能够编写程序实现用户输入的四则运算

  • 理解整数除法与浮点除法的区别

  • 避免常见陷阱(如除零异常、精度丢失等)


什么是算术运算符?

算术运算符是用于执行数学计算的符号。它们作用于操作数(operands)——即参与运算的变量或字面量。Java 的算术运算符包括:

运算符

名称

类型

功能说明

+

加法

二元

两数相加

-

减法

二元

第一个数减去第二个数

*

乘法

二元

两数相乘

/

除法

二元

第一个数除以第二个数

%

取模(取余)

二元

返回除法的余数

✅ 所有算术运算符均为二元运算符(需要两个操作数),但 +- 也可作为一元运算符使用(如 +5-x)。


1. 加法运算符(+

用于将两个数值相加。

语法

result = num1 + num2;

示例

int num1 = 10, num2 = 20;
int sum = num1 + num2; // sum = 30

完整程序

class Addition {
    public static void main(String[] args) {
        int num1 = 10, num2 = 20;
        System.out.println("num1 = " + num1);
        System.out.println("num2 = " + num2);
        System.out.println("The sum = " + (num1 + num2));
    }
}

输出:

num1 = 10
num2 = 20
The sum = 30

💡 注意+ 还可用于字符串拼接(如 "Hello" + "World"),但这是重载行为,不属于算术运算范畴。


2. 减法运算符(-

用于计算两个数的差值。

语法

result = num1 - num2;

示例

int num1 = 20, num2 = 10;
int diff = num1 - num2; // diff = 10

完整程序

class Subtraction {
    public static void main(String[] args) {
        int num1 = 20, num2 = 10;
        System.out.println("Subtraction = " + (num1 - num2)); // 10
    }
}

3. 乘法运算符(*

用于计算两个数的乘积。

语法

result = num1 * num2;

示例

int num1 = 20, num2 = 10;
int product = num1 * num2; // 200

完整程序

class Multiplication {
    public static void main(String[] args) {
        int num1 = 20, num2 = 10;
        System.out.println("Multiplication = " + (num1 * num2)); // 200
    }
}

4. 除法运算符(/

用于计算。其行为取决于操作数的类型:

  • 整数除法:若两个操作数均为整数,则结果为整数(截断小数部分)

  • 浮点除法:只要有一个操作数是浮点数(float/double),结果即为浮点数

语法

result = num1 / num2;

示例

int a = 7, b = 2;
System.out.println(a / b);      // 输出 3(整数除法)

double x = 7.0, y = 2;
System.out.println(x / y);      // 输出 3.5(浮点除法)

完整程序(整数除法)

class Division {
    public static void main(String[] args) {
        int num1 = 20, num2 = 10;
        System.out.println("Division = " + (num1 / num2)); // 2
    }
}

⚠️ 重要警告:除数不能为 0!

  • 整数除以 0 → 抛出 ArithmeticException

  • 浮点数除以 0 → 返回 InfinityNaN


5. 取模运算符(%

返回除法的余数,常用于判断奇偶性、循环边界等场景。

语法

remainder = dividend % divisor;

示例

int num1 = 5, num2 = 2;
int mod = num1 % num2; // 1

完整程序

class Modulus {
    public static void main(String[] args) {
        int num1 = 5, num2 = 2;
        System.out.println("Remainder = " + (num1 % num2)); // 1
    }
}

实用技巧

  • 判断偶数:n % 2 == 0

  • 循环索引回绕:index = (index + 1) % array.length

✅ 取模运算也支持负数:

  • -7 % 3 = -1

  • 7 % -3 = 1
    (余数符号与被除数相同)


综合实战

以下程序演示如何结合 Scanner 类,实现一个支持用户输入的简单计算器:

import java.util.Scanner;

public class ArithmeticOperators {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.print("Enter the first number: ");
        double num1 = sc.nextDouble();

        System.out.print("Enter the second number: ");
        double num2 = sc.nextDouble();

        // 执行四则运算
        double sum = num1 + num2;
        double difference = num1 - num2;
        double product = num1 * num2;
        double quotient = num2 != 0 ? num1 / num2 : Double.NaN; // 避免除零

        // 输出结果
        System.out.println("Sum: " + sum);
        System.out.println("Difference: " + difference);
        System.out.println("Product: " + product);
        if (num2 != 0) {
            System.out.println("Quotient: " + quotient);
        } else {
            System.out.println("Quotient: Cannot divide by zero!");
        }

        sc.close(); // 关闭资源
    }
}

示例输入/输出

Enter the first number: 20
Enter the second number: 10
Sum: 30.0
Difference: 10.0
Product: 200.0
Quotient: 2.0

程序解析

  1. 导入 Scanner:用于读取控制台输入

  2. 读取两个 double 类型数字:支持整数和小数

  3. 执行四则运算:使用标准算术运算符

  4. 安全除法处理:检查除数是否为 0,避免运行时异常

  5. 输出结果:清晰展示每项运算结果


常见误区

问题

说明

解决方案

整数除法截断

5 / 2 = 2 而非 2.5

至少一个操作数转为浮点:(double)5 / 2

除零异常

10 / 0 抛出异常

运算前检查除数是否为 0

浮点精度误差

0.1 + 0.2 != 0.3

使用 BigDecimal 或误差范围比较

忽略取模负数行为

-5 % 2 = -1

明确余数符号规则,必要时用 Math.floorMod()


重点总结

  • Java 提供 5 种基本算术运算符+-*/%

  • 除法行为由操作数类型决定:整数 → 截断;浮点 → 保留小数

  • 取模运算可用于循环、奇偶判断等场景

  • 在实际开发中,优先使用 double 处理用户输入的数值,避免整数除法陷阱

  • 永远不要忽略除零检查,尤其是在处理用户输入时


思考题

  1. 为什么 7 / 2 的结果是 3,而 7.0 / 2 的结果是 3.5?这体现了 Java 的什么特性?

  2. 如何修改上述计算器程序,使其也支持取模运算?需要注意哪些边界情况?

  3. 编写一个程序,判断用户输入的整数是奇数还是偶数,并解释你的实现逻辑。