知识点讲解:光盘:视频\PPT讲解(知识点)\第3章\运算符.mp4
运算符是程序设计中重要的构成元素之一,运算符可以细分为算术运算符、位运算符、关系运算符、逻辑运算符和其他运算符。在本节的内容中,将详细讲解Java语言中运算符的基本知识。
在数学中有加减乘除运算,算术运算符(Arithmetic Operators)就是用来处理数学运算的符号,这是最简单、也最常用的符号。在数字的处理中几乎都会用到算术运算符号,算术运算符可以分为基本运算符、取余运算符和递增或递减运算符等几大类。具体说明如表3-3所示。
表3-3 算术运算符
类 型 |
运算符 |
说 明 |
---|---|---|
基本运算符 |
+
|
加
|
取余运算符 |
% |
取余 |
递增或递减 |
++
|
递增
|
1.基本运算符
在Java程序中,使用最广泛的便是基本运算符。
实例008 使用基本运算符的加减乘除4种运算
源码路径 \daima\3\JiBen1.java 视频路径 \视频\实例\第3章\008
实例文件JiBen1.java的主要代码如下所示。
public class JiBen1 { public static void main(String args[]) { int a=12; int b=4; //运算符 System.out.println(a-b); System.out.println(a+b); System.out.println(a*b); System.out.println(a/b); } }
范例015:演示基数运算的过程 源码路径:光盘\演练范例\015\ 视频路径:光盘\演练范例\015\ 范例016:实现加密处理 源码路径:光盘\演练范例\016\ 视频路径:光盘\演练范例\016\
执行后的效果如图3-7所示。
图3-7 执行效果
注意: 分母为零的情况
在计算机运算中的运算和数学运算有些不同,一般来说分母不能为零,为零会发生程序错误,但是有时程序分母为零并不是错误,例如下面的代码【光盘\daima\3\Jiben.java】。
public class Jiben { public static void main(String args[]) { int AAA=126; //整型数据分母不能为零 System.out.println(a/0); } }
将上述代码编译后会得到如图3-8所示的结果。
图3-8 运行结果
上面的结果提示用户分母不能为零,如果将上述代码中的“int AAA=126”改为“double AAA=126”后,编译后会得到如图3-9所示的结果。
图3-9 更改后的结果
在基本运算符中,只要将分子定义为double型,则分母为零是正确的,得到的值是无穷大,这一点希望初学者加以理解。
2.求余运算符
求余运算的结果不一定总是整数,它的计算结果是使用第一个运算数除以第二个运算数,得到一个整除的结果后剩下的值,也就是余数。由于求余运算符也需要进行除法运算,因此如果求余运算的两个运算数都是整数类型,则求余运算的第二个运算数不能是0,否则将引发除以零异常。如果求余运算的两个操作数中有1个或者2个是浮点数,则允许第二个操作数是0或0.0,只是求余运算的结果是非数:NaN。0或0.0对零以外的任何数求余都将得到0或0.0。
求余运算符是一种很奇怪的运算符,在数学中很少接触过,其实可以很简单地理解它。求余运算符一般被用在除法中,它的取值不是商,而是余数,如5/2,它取的是余数,所以结果是1,而不是商值结果2.5。
实例009 使用“%”运算符
源码路径 \daima\3\Yushu.java 视频路径 \视频\实例\第3章\009
实例文件Yushu.java的主要代码如下所示。
public class Yushu { public static void main(String[] args){ //求余数 int A=19%3; int K=-19%-3; int Q=19%-3; int J=-19%3; System.out.println("A=19%3的余数"+A); System.out.println("K=-19%-3的余数"+K); System.out.println("Q=19%-3的余数"+Q); System.out.println("J=-19%3的余数"+J); } }
范例017:演示取模运算的规律 源码路径:光盘\演练范例\017\ 视频路径:光盘\演练范例\017\ 范例018:用三元运算符判断奇偶数 源码路径:光盘\演练范例\018\ 视频路径:光盘\演练范例\018\
执行后的效果如图3-10所示。
图3-10 执行效果
3.递增递减
递增递减运算符分别是指“++”和“——”,每执行一次,变量将会增加1或者减少1,它可以放在变量的前面,也可以放在变量的后面。无论哪一种都能改变变量的结果,但它们有一些不同,这种变化让初学程序的人甚感疑惑。递增、递减对于刚学程序的人来说是一个难点,读者一定要强加理解,理解的不是++与——的问题,而是在变量前用还是在变量后用的问题。
实例010 使用递增递减运算符
源码路径 \daima\3\Dione.java 视频路径 \视频\实例\第3章\010
实例文件Dione.java的主要代码如下所示。
public class Dione{ public static void main(String args[]) { int a=199; int b=1009; //数据的递增与递减 System.out.println(a++); System.out.println(a); System.out.println(++a); System.out.println(b——); System.out.println(b); System.out.println(——b); } }
范例019:演示递增递减运算符的用法 源码路径:光盘\演练范例\019\ 视频路径:光盘\演练范例\019\ 范例020:更精确地运用浮点数 源码路径:光盘\演练范例\020\ 视频路径:光盘\演练范例\020\
执行后的效果如图3-11所示。
图3-11 执行效果
看了上述执行结果后,相信大多数读者都会一头雾水。在上面程序中,a++是先执行程序才加1,++a是先加1再执行程序,a——是先执行a的值再减1,——a是a先减1,然后再执行程序。代码“system.out.println(a++);”是先执行然后再加1,所以它输出的值应该是初始值199,“system.out.println(a);”因为前一句代码将其加1,所以结果有所变化,结果为200,“system.out.println(++a)”是先加1,其结果就是2001,而后面的代码相信读者也应该懂了。
在Java程序设计中,关系运算符(Relational Operators)和逻辑运算符(Logical Operator)显得十分重要。关系运算符是指值与值之间的相互关系,逻辑(logical)关系是指可以用真值和假值链接在一起的方法。
1.关系运算符
在数学运算中有大于或者小于、等于、不等于的关系,在程序中可以使用关系运算符来表示上述关系。在表3-4中列出了Java中的关系运算符,通过这些关系运算符会产生一个结果,这个结果是一个布尔值,即true或false,在Java中任何类型的数据都可以用“==”进行比较是不是相等,用“!=”比较是否不相等,只有数字才能比较大小,关系运算的结果可以直接赋予布尔变量。
表3-4 关系运算符
类 型 |
说 明 |
---|---|
== |
等于 |
!= |
不等于 |
> |
大于 |
< |
小于 |
>= |
大于等于 |
<= |
小于等于 |
2.逻辑运算符
布尔逻辑运算符是最常见的逻辑运算符,用于对Boolean型操作数进行布尔逻辑运算,在Java中的布尔逻辑运算符如图3-5所示。
表3-5 逻辑运算符
类 型 |
说 明 |
---|---|
&& |
与(AND) |
|| |
或(OR) |
∧ |
异或(XOR) |
| |
简化或(Short-circuit OR) |
& |
简化并(Short-circuit AND) |
! |
非(NOT) |
逻辑运算符与关系运算符运算后得到的结果一样,都是Boolean类型的值。在Java程序设计中,“&&”和“||”布尔逻辑运算符不总是对运算符右边的表达式求值,如果使用逻辑与“&”和逻辑或“|”,则表达式的结果可以由运算符左边的操作数单独决定。通过表3-6读者可以了解常用逻辑运算符号“&&”、“||”、“!”运算后的结果。
表3-6 逻辑运算符
A |
B |
A&&B |
A‖B |
!A |
---|---|---|---|---|
false |
false |
false |
false |
true |
false |
true |
false |
true |
true |
true |
false |
false |
true |
false |
true |
true |
true |
true |
false |
标识符是严格区分大小写的,在Java中,no和No是完全不同的。还需要注意的是虽然使用$符号在语法上是被允许的,但在编码规范中规定尽量不要使用它,因为它容易混淆。
关键字是Java系统保留使用的标识符,也就是说只有Java系统才能使用,程序员不能使用这样的标识符。关键字是Java中的特殊保留字,到目前为止,Java语言保留的关键字如表3-10所示。
表3-10 Java关键字
从表3-10中可以看出,true、false和null都是Java中定义的特殊值,虽然它们不是关键字,但也不能作为类名、方法名和变量名等。另外,表中的goto和const是两个保留字(reserved word),保留字的意思是Java现在还未使用这两个单词作为关键字,但可能在未来的Java版本中使用这两个单词作为关键字。