陆——运算符、表达式与语句
一、运算符
程序是由许多语句( statement )组成的,而语句组成的基本单位就是表达式与运算符。Java 的运算符可分为 4 类:算术运算符、关系运算符、逻辑运算符和位运算符。
Java 中的语句有多种形式,表达式就是其中的一种形式。表达式是由操作数与运算符所组成的。操作数可以是常量、变量,也可以是方法,而运算符就是数学中的的运算符号,如 “ + ”、“ - ”、“ * ”、“ / ”、“ % ” 等。
例如:
A + B = 100;
其中,A 与 B 都是操作数,而 “ + ” 就是运算符,它们合起来就是一个表达式。
1.赋值运算符
若为各种不同类型的变量赋值,就需要用到赋值运算符(Assignment Operator)。简单的赋值运算符由等号( = )实现,只是把等号右边的值赋予等号左边的变量。
例如:
int num_a = num_b + 10;
这句话的含义是,把变量 num_b 的值加 10,再赋( = )给 num_a。
2.一元运算符
对于很多表达式而言,运算符前后都会有操作数。但有一类操作符比较特别,它只需要一个操作数。这类运算符称为一元运算符(或单目运算符,Unary Operator)。
下表为一元运算符的成员:
一元运算符 | 意义 |
+ | 正号 |
- | 负号 |
! | NOT,非 |
~ | 取补码 |
++ | 变量值自增1 |
-- | 变量值自减1 |
举例说明这些符号的含义:
+5; | //表示正数5 |
~x; | //表示取变量 x 的补码 |
y = -x; | //表示负 x 的值赋给变量 y |
!x; | //x 的 NOT 运算,若 x 为 true,则 !x 返回 false。若 x 为 false,则 !x 返回 true |
x = ~x | //表示将 x 的值取反,并赋给自己 |
3.算术运算符
算术运算符(Arithmetic Operator)用于量之间的运算。
算术运算符在数学上经常会用到,下表将列出它的成员:
算术运算符 | 意义 |
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 余数 |
(1)加法运算符 “ + ”
将加法运算符 “ + ” 的前后两个操作数相加。
(2)减法运算符 “ - ”
将减法运算符 “ - ” 前面的操作数减去后面的操作数。
(3)乘法运算符 “ * ”
将乘法运算符 “ * ” 前后两个操作数相乘。
(4)除法运算符 “ / ”
将除法运算符 “ / ” 前面的操作数除以后面的操作数。
使用除法运算符时,要特别注意数据类型的问题。若被除数和除数都是整型,且被除数不能被除数整除时,这时输出的结果为整数(即整型数/整型数 = 整型数)。这是因为整型变量无法保存小数点后面的数据所致,因此在声明数据类型及输出时要按照相对应的数据类型来声明。
如若为了保证程序运行结果与实际的值相同,可以使用强制性的类型转换。
(5)取余运算符 “ % ”
将取余运算符 “ % ” 前面的操作数除以后面的操作数,取其得到的余数。
Java中的取余操作数也可以是负数和浮点数,而在 C/C++ 中,取余运算的操作数只能是整数。
4.逻辑运算符
逻辑运算符只对布尔型操作数进行运算并返回一个布尔型数据。也就是说,逻辑运算符的操作数和运行结果只能是真( true )或者( false )。
常见的逻辑运算符有 3 个,即与( && )、或( || )、非( !),如下表所示:
运算符 | 含义 | 解释 |
&& | 与(AND) | 两个操作数皆为真,运算结果才为真 |
& | ||
|| | 或(OR) | 两个操作数只要一个为真,运算结果就为真 |
| | ||
! | 非(NOT) | 返回与操作数相反的布尔值 |
在逻辑运算中,“ && ” 和 “ || ” 属于所谓的短路逻辑运算符(Short-Circuit Logical Operators)。对于逻辑运算符 “ && ”,要求左右两个表达式都为 true 时才返回 true,如果左边第一个表达式为 false 时,它立刻就返回 false,就好像短路了一样立刻返回,省去了一些不必要的计算开销。
类似的,对于逻辑运算符 “ || ”,要求左右两个表达式有一个为 true 时就返回 true,如果左边第一个表达式为 true 时,它立刻就返回 true。
有时&#x