1.4 运算符
1.4.1 赋值运算符
赋值运算符用符号“=”表示,它是一个二元运算符(对两个操作数作处理),其功能是将右方操作数所含的值赋给左方的操作数。例如:
int a = 100;
该表达式是将100赋值给a。左方的操作数必须是一个量,而右边的操作数则可以是变量(如a、number)、常量(如123、‘book’)、有效的表达式(如45*2)。
由于复制运算符“=”处理时,会先取得右方表达式处理的结果,因此如果一个表达式中有两个以上的“=”运算符,会从最右方的“=”开始处理。
1.4.2 算术运算符
Java中的算术运算符主要有+(加号)、-(减号)、*(乘号)、/(除号)、%(求余),它们都是二元运算符。Java中算术运算符的功能及使用方式如表1.5所示。
运算符 | 说明 | 实例 | 结果 |
+ | 加 | 12.45f+15 | 27.45 |
- | 减 | 4.56-0.16 | 4.4 |
* | 乘 | 5L*12.45f | 62.25 |
/ | 除 | 7/2 | 3 |
% | 取余数 | 12%10 | 2 |
其中“+”和“-”运算符还可以作为数值的正负号,如+5,-7。
1.4.3 自增和自减运算符
自增、自减运算符是单目运算符,可以放在变量之前,也可以放在变量之后。操作元必须是一个整型或者一个浮点型变量。自增、自减运算符的作用是使变量的值加1或减1。
++a(--a) //表示在使用变量a之前,先将a+(-)1
a++(a--) //表示在使用变量a之后,先将a+(-)1
b = ++a //先将a的数值+1,再赋值给b,若a初始为4,则现在a = 5,b = 5
b = a++ //将a的数值赋值给b,然后将a的数值+1,则现在a = 5,b = 4
1.4.4 比较运算符
比较运算符属于二元运算符,用于程序中的变量之间、变量和自变量之间以及其他类型的信息之间的比较。比较运算符的运算结果是boolean类型。当运算符对应的关系成立时,运算结果为ture,否则为false。如表1.6所示。
运算符 | 作用 | 举例 | 操作数据 | 结果 |
> | 比较左方是否大于右方 | 'a'>'b' | 整形、浮点型、字符型 | false |
< | 比较左方是否小于右方 | 165<456 | 整形、浮点型、字符型 | ture |
== | 比较左方是否等于右方 | 'c'=='c' | 基本数据引用型、引用型 | ture |
>= | 比较左方是否大于或等于右方 | 479>=426 | 整形、浮点型、字符型 | ture |
<= | 比较左方是否小于或等于右方 | 12.45<=45.5 | 整形、浮点型、字符型 | ture |
!= | 比较左方是否不等于右方 | 'y'!='t' | 基本数据引用型、引用型 | ture |
1.4.5 逻辑运算符
逻辑运算符是对true(真)和false(假)这两种逻辑值进行运算,运算后的结果仍是一个逻辑值。逻辑运算符包括&&(逻辑与)、||(逻辑或)、!(逻辑非)。逻辑运算符计算的值必须是boolean型数据。在逻辑运算符中,除了“!”是一元运算符之外,其他都是二元运算符。如表1.7所示。
运算符 | 含义 | 用法 | 结合方向 |
&&、& | 逻辑与 | op1 && op2 | 从左到右 |
|| | 逻辑或 | op1 || op2 | 从左到右 |
! | 逻辑非 | !op | 从右到左 |
1.4.6 位运算符
位运算的操作数类型是整型,可以是有符号的,也可以是无符号的。位运算符可以分为位逻辑运算符和位移运算符两大类。
1.“按位与”运算
位逻辑与实际上是将操作数转换成二进制表示方式,然后将两个二进制操作数对象从低位(最右边)到高位对齐,每位求与,若两个操作数对象同一位都为1,则结果对应位为1,否则结果中对应位为0。
2.“按位或”运算
位逻辑或实际上是将操作数转换成二进制表示方式,然后将两个二进制操作数对象从低位(最右边)到高位对齐,每位求或,若两个操作数对象同一位都为0,则结果对应位为0,否则结果中对应位为1。
3.“按位取反”运算
取反运算符,实际上是将操作数转换成二进制表示方式,然后将各位二进制位由1变为0,由0变为1。
4.“按位异或”运算
位逻辑异或实际上是将操作数转换成二进制表示方式,然后将两个二进制操作数对象从低位(最右边)到高位对齐,每位求异或,若两个操作数对象同一位不同时,则结果对应位为1,否则结果中对应位为0。
5.移位操作
除了上述运算符,还可以对数据按二进制进行移位操作。JAVA中的移位运算符有三种:
<<: 左移。
>>: 右移。
>>>:无符号右移。
1.4.7 复合赋值运算符
运算符 | 含义 | 举例 | 等价效果 |
+= | 相加结果赋予左侧 | a += b | a = a + b |
-= | 相减结果赋予左侧 | a -= b | a = a - b |
*= | 相乘结果赋予左侧 | a *= b | a = a * b |
/= | 相除结果赋予左侧 | a /= b | a = a / b |
%= | 取余结果赋予左侧 | a %= b | a = a % b |
&= | 与结果赋予左侧 | a &= b | a = a & b |
|= | 或结果赋予左侧 | a |= b | a = a | b |
^= | 异或结果赋予左侧 | a ^= b | a = a ^ b |
<<= | 左移结果赋予左侧 | a <<= b | a = a << b |
>>= | 右移结果赋予左侧 | a >>= b | a = a >> b |
>>>= | 无符号右移结果赋予左侧 | a >>>= b | a = a >>> b |
1.4.8 三元运算符
三元运算符的用法如下:
条件式 ? 值1 :值2
三元运算符的运算法则是:若条件式的值位ture,则整个表达式取值1,否则取值2.
1.4.9 运算符的优先级
优先级 | 描述 | 运算符 | 优先级 | 描述 | 运算符 |
1 | 圆括号 | () | 9 | 按位与运算 | & |
2 | 正负号 | +、- | 10 | 按位异或运算 | ^ |
3 | 一元运算符 | ++、--、! | 11 | 按位非运算 | | |
4 | 乘除 | *、/、% | 12 | 逻辑与运算 | && |
5 | 加减 | +、- | 13 | 逻辑或运算 | || |
6 | 移位运算 | <<、>>、>>> | 14 | 三元运算符 | ?= |
7 | 比较大小 | <、>、>=、<= | 15 | 赋值运算符 | = |
8 | 比较是否相等 | ==、!= |