第五章  Java运算符和表达式

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

  2. 运算符的分类:

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

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

    算术运算符与算术表达式


分类运算符名称示例描述

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

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

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

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


关系运算符与关系表达式


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

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


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


逻辑运算符


运算符名称示例描述
逻辑非!AA为true时结果为false,A为false时结果为true
&&逻辑与A&&BA、B同为true时结果为true,否则为false
||逻辑或A||BA、B同为false时结果为false,否则为true
逻辑异或A∧BA、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。