### 算术运算符

Java 中的算术运算符主要有+（加号）、—（减号）、*（乘号）、/（除号）、%（求余），它们都是二元运算符。Java 中算术运算符的功能及使用方式如表 1 所示。

表 1 Java 算术运算符

运算符 | 说明 | 实例 | 结果
+ | 加 | 12.45f+15 | 27.45
- | 减 | 4.56-0.16 | 4.4
* | 乘 | 5*12 | 60
/ | 除 | 7/2 | 3
% | 取余数 | 12%10 | 2

其中“+”和“-”运算符还可以作为数据的正负符号，例如+5，-7。

下面通过一个小程序来介绍使用算术运算符的方法。

例 在项目中创建类 Arith，在主方法中定义变量，使用算术运算符将变量的计算结果输出。

public class Arith { //创建类

public static void main(String[] args) { //主方法

float number1 = 45.56f; //声明 float 型变量并赋值

int number2 = 152; //声明 int 型变量并赋值

System.out.println("和为：" + number1 + number2); //将变量相加之和输出

System.out.println("差为：" + (number2 - number1)); //将变量相减之差输出

System.out.println("积为：" + number1 * number2); //将变量相乘的积输出

System.out.println("商为：" + number1 / number2); //将变量相除的商输出

}

}

运行结果如图 1 所示。

图 1 运行结果

在应用算术运算符时，可以分为对整型数据的运算和对浮点型数据的运算，下面进行详细介绍。

#### 1．整型数据的算术运算

整型数据的“+”、“-”、“*”、的运算与数学中的运算相同，这里不再介绍，下面介绍整型数据间的“/”和“%”运算。

l 整数的除法（运算符“/”）运算

当整数间进行除法运算时，其结果将舍弃小数部分，并且忽略四舍五入，最终的结果为商的整数部分，所以通过计算机来计算“5/3*3”与“5*3/3”的结果是不同的，前者为 3，而后者为 5。

例 在项目中创建类 Arith1，在主方法中定义变量，使用“/”运算符进行除法运算，并输出计算结果。

public class Arith1 {

public static void main(String[] args) { // 主方法

int i1 = 7 / 3; // 在数学计算中其结果约为 2.33

int i2 = 11 / 3; // 在数学计算中其结果约为 3.67

int i3 = -7 / 2; // 在数学计算中其结果为-3.5

int i4 = 0 / 9;

System.out.println("7/3=" + i1); // 输出结果为：2

System.out.println("11/3=" + i2); // 输出结果为：3

System.out.println("-7/2=" + i3); // 输出结果为：-3

System.out.println("0/9=" + i4); // 输出结果为：0

}

}

运行结果如图 2 所示。

图 2 运行结果

l 整数的求余（运算符“%”）运算

当整数间进行求余运算时，其运算结果为整数除法运算后的余数。

例 在项目中创建类 Arith2，在主方法中定义变量，使用“%”运算符进行求余运算，并输出计算结果。

public class Arith2 {

public static void main(String[] args) { // 主方法

int i1=11%4; //结果为：3

int i2=8%4; //结果为：0

int i3=9%10; //结果为：9

int i4=-7%3; //结果为：-1

int i5=0%9; //结果为：0

System.out.println("11%4="+i1);

System.out.println("8%4="+i2);

System.out.println("9%10="+i3);

System.out.println("-7%3="+i4);

System.out.println("0%9="+i5);

}

}

运行结果如图 3 所示。

图 3 运行结果

l 将一个整数除以 0 或除以 0 求余的运算

当进行一个整数除以 0 或除以 0 求余运算时，虽然可通过编译，但在运行时会抛出 java.lang.ArithmeticException 异常，例如：

public static void main(String[] args) { // 主方法

int i1=11/0; //编译成功，但运行时抛出异常

int i2=9%0; //编译成功，但运行时抛出异常

System.out.println(i1);

System.out.println(i2);

}

以上代码运行时抛出如图 4 所示的异常。

图 4 抛出的异常信息

#### 2．浮点型数据的算术运算

浮点型数据同样可以应用算术运算符进行算术操作，同整型数据运算一样，运算结果的类型和参与计算中取值范围最大的数据的类型一致。如若存在 double 型的数据进行运算，则运算的结果为 double 型，否则若存在 float 型数据，那么结果就为 float 型。

当浮点型数据进行运算时，计算机计算出的小数点后的 n 位，与实际的数值会有一定的误差，它只能尽量地去接近实际值。

例如，计算 float 型数据 4.0 减去浮点型数据 2.9 的结果，在数学计算中该结果为 1.1，但计算机计算出的结果只能尽量地去接近 1.1。

float f=4.0f-2.9f;

System.out.println(f); //输出结果为：1.0999999

注意：在浮点型数据的算术运算中，若进行一个浮点型数据除以 0 或除以 0 求余的运算，在运行时并不会抛出异常，而会得到表示无穷大、无穷小或为 NaN 的特殊值：正浮点数除以 0，结果为 Infinity，表示无穷大；负浮点数除以 0，结果为-Infinity，表示无穷小；浮点数除以 0 求余，结果为 NaN。

例 在项目中创建类 Arith3，在主方法中进行浮点型数据除以 0 或除以 0 求余的运算，并输出计算结果。

public class Arith3 {

public static void main(String[] args) { // 主方法

float f1=1.234f/0; //计算正浮点数除以 0

float f2=-5.678f/0; //计算负浮点数除以 0

float f3=1.234f%0; //计算正浮点数除以 0 求余

float f4=-5.678f%0; //计算负浮点数除以 0 求余

System.out.println(f1); //输出结果为：Infinity

System.out.println(f2); //输出结果为：-Infinity

System.out.println(f3); //输出结果为：NaN

System.out.println(f4); //输出结果为：NaN

}

}

运行结果如图 5 所示。

图 5 运行结果