
2.5.1 算术运算符
算术运算符是用来执行一般的数学运算的符号,这类运算符是最基本、最常见的,作用于整数类型、浮点类型数据,用来完成相应的算术运算。Java语言的算术运算符可以分为一元运算符和二元运算符。一元运算符只有一个操作数参与运算,二元运算符则有两个操作数参与运算。一元算术运算符有4种,如表2.4所示。
表2.4 一元算术运算符

需要注意的是,针对自增运算符(++)和自减运算符(--)而言,写在变量后面的为后置式,写在变量前面的为前置式。二者的区别在于:后置式是先将值赋值给接受的其他变量,然后再加1(减1),前置式是先加1(减1),然后再将变量的值赋值给其他变量。
接下来,通过案例来演示一元算术运算符的使用,如例2-3所示。
【例2-3】 Demo0203.java

程序的运行结果如下:

例2-3中,如果不将第5行代码注释掉,则会编译报错,原因是在byte类型的变量a前面加了“+”号,表示将其类型提升为了int类型,所以报错。但是,第6行使用int类型的变量d来接收,则不会报错。第13行代码中,因为i++的自增运算符为后置式,所以会先将i变量值11赋值给变量j,然后i变量加1,执行后结果为i = 12,j = 11。第15行代码中,因为++i的自增运算符为前置式,所以会先将i变量先加1,然后再赋值给j变量,执行后结果为i = 13,j = 13。第17行代码中,因为i--的自减运算符为后置式,所以会先将i变量值13赋值给变量j,然后i变量减1,执行后结果为i = 12,j = 13。第19行代码中,因为--i的自减运算符为前置式,所以会先将i变量减1,再赋值给j变量,执行后结果为i = 11,j = 11。
Java中的二元算术运算符有5种,如表2.5所示。
表2.5 二元算术运算符

对于上述二元算术运算符,需要特别注意以下几点:
对于除法运算符“/”,若两个整数之间做除法,则计算结果也是整型,除数不能为0;若两个操作数只要有一个是浮点数,则计算结果也是浮点数。
取模运算符“%”也称为求余运算符,其操作数可以是浮点数。只有单精度操作数的浮点表达式按照单精度运算求值,结果是单精度;如果包含一个或一个以上的双精度操作数,则按双精度运算,结果是双精度。运算结果的正负取决于被取模数(被除数)的符号,与模数(除数)的符号无关。
加法运算符“+”可用于字符串连接符。Java语言针对“+”号运算符进行了扩展,使它可以进行字符串的拼接,如“hi”+“boy”,得到就是字符串“hiboy”。
接下来,通过案例来演示二元算术运算符的使用,如例2-4所示。
【例2-4】 Demo0204.java

程序的运行结果如下:
--------算术运算符和算术表达式案例-------- 66+9=75 66-9=57 66*9=594 66/9=7 66%9=3
例2-4中,使用算术运算符+、-、*、/、%进行了算术计算,优先计算小括号内的表达式。第8行代码中,因为两个变量都为整数类型,且66/9无法整除,所以会将小数点以后的位数省略,结果为7;如果要保留小数点以后的位数,则必须声明变量a和b为浮点数据类型。