第五章  Java运算符和表达式

  1. 定义:运算符是指具有运算功能的符号。参与运算的数据称为操作数。运算符和操作数按照一定的规则组成的式子称为表达式。

  2. 运算符的分类:

    根据操作数个数不同分类:单目运算符(一元运算符)、双目运算符(二元运算符)、三目运算符(三元运算符)

    根据性质或用途不同分类:算术运算符(+、-、*、/、%、++、--)、关系运算符(>、<、>=、<=、= =、!=)、逻辑运算符(!、&&、||)、位运算符(>>、<<、>>>、&、|、∧、~)、赋值运算符(=、+=、—=、*=、/=、%=等)、条件运算符(?和:成对使用)

    算术运算符与算术表达式

分类 运算符 名称 示例 描述

+ 加法 A+B A加B
- 减法 A-B A减B
* 乘法 A*B A乘以B
/ 除法 A/B A除以B
% 取余运算 A%B A除以B取余数

+ 正号 +A 正A
- 负号 -A 负A
++ 自增 ++A,A++ A自加1
-- 自减 --A,A-- A自减1

    整型数据在进行除法(/)运算时,结果只保留值的整数部分。

    单目运算符中的自增和自减运算符位于操作数左侧和右侧是不同的。二者区别:位于左侧时,操作数先自增或自减     1后再使用操作数;位于右侧时,先使用操作数,再使操作数自增或自减1。

关系运算符与关系表达式

运算符 名称 示例 描述
== 等于 A==B A等于B吗
!= 不等于 A!=B A不等于B吗
> 大于 A>B A大于B吗
< 小于 A<B A小于B吗
>=
大于等于 A>=B A大于等于B吗
<= 小于等于 A<=B A小于等于B吗

    关系表达式的运算次序是先分别算出运算符两侧的值,再把二者作比较。

    字符型数据按其在Unicode标准字符集中的位置值进行比较。常见字符的位置值由小到大顺序是:空格<'0'<...       <'9'<'A'<...<'Z'<'a'<...<"z"<任何汉字。

逻辑运算符

运算符 名称 示例 描述
逻辑非 !A A为true时结果为false,A为false时结果为true
&& 逻辑与 A&&B A、B同为true时结果为true,否则为false
|| 逻辑或 A||B A、B同为false时结果为false,否则为true
逻辑异或 A∧B A、B同为true或同为false时结果为false,否则结果为true

    “&&”和“||”又称为“短路与”和“短路或”。如果“&&”左边表达式值为false,则整个表达式的值为false,       编译器不再运算右边的表达式。同样,如果“||”左边的表达式值为true,则整个表达式的值为true,编译器不       再运算右边的表达式。

    赋值运算符:Java中的“=”表示的是赋值运算符,不同于数学中的等号(Java中表示等于的运算符是用两个连在                  一起的等号(“==”)表示)。例如表达式 A+=B 表示 A=A+B,意思是A加B后的值赋值给A。

    位运算符:Java中提供了可以直接对二进制数进行操作的位运算符。“~”表示按位取反,“&”表示按位与运                 算,“|”表示按位或运算,“∧”按位异或,“<<”左移,“>>”带符号右移,“>>>”无符号右移。

    计算机系统中为了便于对数值进行处理,数值一律用补码表示。其中,正数的补码与原码相同,符号位为0,例如     +9的补码为00001001;负数的补码为:符号位为1,其余位数该数绝对值的原码按位取反,然后整个数加1。例如:     对于-7来说,符号位为1,+7的原码为0000111(除去符号位,剩下7位),取反后得到1111000,加1得到1111001,     则-7的补码为11111001。

    在不溢出的情况下,左移运算相当于乘运算,左移n位相当于该操作数乘以2的n次方;右移运算相当于除运算,右     移n位相当于该操作数除以2的n次方。

    条件运算符:expression1expression12expression13;

                表达式expression1的值必须为布尔型,表达式expression12和expression13的值可以为任意类         型,且类型可以不同。

                条件表达式的值取决于expression1的判断结果,如果expression1结果为true,则执行表达式2,         否则执行表达式3。