
3.2.1 算术运算

算术运算是基本的数值处理方式,如加法、减法、乘法、除法。为了完成这类运算,Java语言提供了加法、减法、乘法、除法、取余5种运算符。它们被统称为算术运算符。其名称及功能如表3.3所示。
表3.3 算术运算符的名称及功能

1.算术运算表达式
使用算术运算符连接起来的表达式称为算术运算表达式。其语法形式如下:

所有的算术运算表达式都需要两个操作数。因此,其中的“算术运算符”是二元运算符(双目运算符)。如果“操作数”是小数,表达式的类型为双精度类型;如果是整数,则对应的是整数类型。
2.加、减、乘法运算
在Java语言中,数值可以分为整数和小数。其整数的加、减、乘法运算和日常生活中的运算方式是一样的。
【示例3-4】下面将使用算术运算符+、-、*分别获取两个数的和、差、积。代码如下:

运行结果如下:

其小数的加、减、乘法运算和日常生活中的运算方式也是一样的。
在进行运算时,需要注意数值范围,尤其是乘法运算。一旦超出范围后,得到的结果就不是预期的结果了,如以下代码:

运行结果如下:

在此代码中,两个整型数值相乘得到的结果超出了整型的范围。此时,将会得到一个错误的结果。
3.除法运算
在除法运算中,如果操作数是整数,将按照数学中的整除方式进行运算。
【示例3-5】下面将计算50除以6。代码如下:

运行结果如下:

由于整数除法是整除运算,所以要获取小数,必须把整数写为小数。
在Java语言中,小数的除法运算和日常生活中的除法运算方式是一样的。
【示例3-6】下面将计算50.0/6.0。代码如下:

运行结果如下:

进行小数运算后,输出时会涉及精度问题。这时,程序员可以根据需求,对输出的小数点后的精确位数进行指定。这时,需要使用printf()中的%f占位符。在这个占位符中,可以指定输出小数总的位数及小数点后的精确位数。如果位数不够,将使用空格表示,形式如图3.3所示。

图3.3 占位符的格式
注意:程序员可以只指定输出的总位数,也可以只指定小数点后的精确位数。
【示例3-7】下面将进行除法运算,数值总的输出位数为4,小数点后为2位。代码如下:

运行结果如下:

在数学运算中,除数不能为0。但是在Java语言中,除数可以是0。针对这种情况,Java语言提供了3个特殊值,分别为NEGATIVE_INFINITY、POSITIVE_INFINITY和NaN,如表3.4所示。
表3.4 特殊值

【示例3-8】下面将分别使用10.2、-10.2和0.0除以0。代码如下:

运行结果如下:

注意:在表3.4中显示的是书写时的值,而示例3-8的运行结果是输出的值。它们的对应关系如下:NEGATIVE_INFINITY对应Infinity;POSITIVE_INFINITY对应-Infinity;NaN对应NaN。
4.取余运算
取余运算用来计算两个数值在整除过程中的余数。Java语言使用取余运算符(%)实现取余运算。当两个操作数是正整数时,取余运算和日常生活中的运算方式是一样的。
【示例3-9】下面将计算两个数整除后的余数。代码如下:

运行结果如下:

注意:在此代码的输出字符串中,使用两个%来表示一个取余运算符。这是因为如果是一个%的话,计算机会当成输出格式处理,所以会输出以下错误信息:

如果操作数存在负数,Java语言会首先按照正值计算余数,然后将第一个操作数的符号添加给余数。
【示例3-10】下面将实现负数的取余操作。代码如下:

运行结果如下:

在Java语言中,不仅可以对整数进行取余,还可以对小数进行取余。当两个操作数是小数时,取余运算后的结果也是小数。
【示例3-11】下面将实现3.7被1.2取余。代码如下:

运行结果如下:

小数的正/负号问题,和整数的正/负号是一样的。