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