3.7 运算符 3.7.1 算术运算符
3.7 运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。Java
语言使用运算符将一个或多个操作数连缀成执行性语句,用以实现特定功能
java运算符分类
Java
语言中的运算符可分为如下几种。
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 类型相关运算符
3.7.1 算术运算符
Java
支持所有的基本算术运算符,这些算术运算符用于执行基本的数学运算:加、减、乘、除和求余等。下面是7个基本的算术运算符。
加法运算符
加法运算符为:+
。例如如下代码:
1 | double a = 5.2; |
除此之外,+还可以作为字符串的连接运算符。
减法运算符
减法运算符为:-
。例如如下代码:
1 | double a = 5.2; |
乘法运算符
乘法运算符为:*
。例如如下代码:
1 | double a = 5.2; |
除法运算符
除法运算符为:/
。被除数/除数
整数除法
除法运算符有些特殊,如果除法运算符的两个操作数都是整数类型,则计算结果也是整数,就是将自然除法结果的小数部分丢弃,例如19/4的结果是4,而不是5。
整数除法除数不能为零
如果除法运算符的两个操作数都是整数类型,则除数不可以是0,否则将引发除以零异常。
浮点数除法
但如果除法运算符的两个操作数有一个是浮点数,或者两个都是浮点数,则计算结果也是浮点数,这个结果就是自然除法的结果。
浮点数除法的除数可以为零 结果为无穷大
浮点数除法允许除数是0,或者0.0,如果除数是0或者0.0,则得到结果是正无穷大或负无穷大。看下面代码。
1 | public class DivTest { |
运行结果:
1 | 1.6774193548387097 |
求余运算
求余运算符为:%
。求余运算的结果不一定总是整数,它的计算结果是使用第一个操作数除以第二个操作数,得到一个整除的结果后剩下的值就是余数。
整数求余运算第二个操作数不能为零
由于求余运算也需要进行除法运算,因此如果求余运算的两个操作数都是整数类型,则求余运算的第二个操作数不能是0,否则将引发除以零异常。
浮点数求余运算第二个操作数为零得到非数
如果求余运算的两个操作数中有一个或者两个都是浮点数,则允许第二个操作数是0或0.0。**如果求余运算第二个操作数为零,求余运算的结果是非数:NaN
**。
浮点数求余运算第一个操作数为零得到零
0或0.0对零以外的任何数求余都将得到0或0.0。
程序示例
1 | public class ModTest { |
自加运算
自加运算符为:++
,该运算符有两个要点:
- 自加是单目运算符,只能操作一个操作数;
- 自加运算符只能操作单个数值型(整型、浮点型都行)的变量,不能操作常量或表达式。
运算符既可以出现在操作数的左边,也可以出现在操作数的右边。但出现在左边和右边的效果是不一样的。
左加加 先加一再取值
如果把++放在左边,则先把操作数加1,然后才把操作数放入表达式中运算;
右加加 先取值再加一
如果把++放在右边,则先把操作数放入表达式中运算,然后才把操作数加1。
程序示例 右加加
看如下代码:
1 | int a= 5; |
执行完后,a的值为6,而b的值为11。
当++在操作数右边时,先执行a+6
的运算(此时a的值为5),然后对a加1。
程序示例 左加加
对比下面代码
1 | int a = 5; |
执行的结果是a的值为6,b的值为12。当++在操作数左边时,先对a加1,然后执行a+6
的运算(此时a的值为6),因此b为12。
自减运算符
自减运算符为:--
。也是单目运算符,用法与++基本相似,只是将操作数的值减1
更加复杂的运算
Java
并没有提供其他更复杂的运算符,如果需要完成乘方、开方等运算,则可借助于java.lang.Math
类,Math
类下包含了丰富的静态方法,用于完成各种复杂的数学运算
程序示例 乘方 开方 三角
1 | public class MathTest { |
负数运算符
+除可以作为数学的加法运算符之外,还可以作为字符串的连接运算符。
-除可以作为减法运算符之外,还可以作为求负的运算符
1 | //定义 double变量x,其值为-5.0 |