1. 运算符的作用是对数据进行计算和处理。按照需要操作的数据个数,可分为一元运算符、二元运算符和三元运算符。

2. 一元运算符:只需一个操作数,例如自增++、自减--、正负号等。

3. 二元运算符:需要两个操作数,例如加减乘除、大于小于等绝大多数运算符号。

4. 三元运算符:需要三个操作数,格式为条件 ? 结果1 : 结果2。

5. 运算符还可以细分为:算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符等类别。

6. 运算符组成完整运算表达式,例如a + 6、b * 7 - 9。

7. 运算符存在优先级,括号()优先级最高,赋值运算符=优先级最低。

8. 表达式运算时,会先执行优先级高的运算符,再执行优先级低的运算符;相同优先级的运算符,按照自身结合性决定计算顺序。
2.4.1 算术运算符

1. 算术运算符包含:加+、减-、乘*、除/、取模%、自增++、自减--。

2. 二元算术运算规则:整数之间运算,结果为整数;只要有浮点数参与运算,最终结果就是浮点数。

3. 自增++、自减--分为两种写法:
① 前置自增/自减:符号写在变量左边,先增减数值,再参与运算
② 后置自增/自减:符号写在变量右边,先参与运算,再增减数值

4. 取模运算符%用来计算余数,小数也可以进行取模运算。

5. 字符串拼接特性:+遇到字符串时,会变为字符串连接符,把内容拼接为新字符串。

6. byte、short、char类型混合运算时,会先自动提升为int类型,再进行计算。
2.4.2 赋值运算符

1. 基础赋值运算符为=,作用是把右侧表达式的计算结果,存入左侧的变量中。

2. 赋值运算符是二元运算符,左侧必须是变量,右侧可以是任意合法表达式。

3. 赋值运算符整体优先级极低,且具备右结合性。

4. 扩展赋值运算符:在=前加上其他运算符,简化代码书写,例如+=、-=、*=、/=、%=等。

5. 扩展赋值运算符自带隐式强制类型转换,不会直接报错。
2.4.3 条件运算符(三元运算符)

1. 三元运算符语法格式:布尔表达式 ? 表达式1 : 表达式2

2. 运行逻辑:布尔表达式结果为true,执行并返回表达式1;结果为false,执行并返回表达式2。

3. 三元运算符可以替代简单的if-else判断语句,精简代码。
2.4.4 位运算符

1. 位运算符直接对二进制补码的位(0和1)进行运算,执行效率极高。

2. 常用位运算符:按位与&、按位或|、按位异或^、按位取反~、左移<<、右移>>、无符号右移>>>。

3. 左移<<:整体二进制位向左移动,低位补0,效果等价于数值乘以2。

4. 右移>>:整体二进制位向右移动,高位补符号位,效果等价于数值除以2。

5. 无符号右移>>>:高位统一补0,不区分正负符号。
2.4.5 关系运算符(比较运算符)

1. 关系运算符用于比较两个数值的大小、相等关系。

2. 常用符号:等于==、不等于!=、大于>、小于<、大于等于>=、小于等于<=。

3. 关系运算的返回结果只有boolean类型,只能是true或者false。

4. 注意区分:==是判断相等,=是赋值,二者不能混用。
2.4.6 逻辑运算符

1. 逻辑运算符只能处理boolean类型数据,最终运算结果也为布尔值。

2. 常用逻辑运算符:
① 逻辑与&&:一假即假,全真才为真,具备短路特性
② 逻辑或||:一真即真,全假才为假,具备短路特性
③ 逻辑非!:取反,真变假、假变真
④ 短路特性:如果表达式前半部分已经可以确定最终结果,后半部分代码不会执行。

3. 逻辑运算符优先级:!最高,其次&&,最后||。
补充:优先级与结合性

1. 整体优先级排序(从高到低):括号 > 一元运算符 > 算术运算符 > 位移运算符 > 关系运算符 > 逻辑运算符 > 三元运算符 > 赋值运算符。

2. 相同优先级:一元、三元、赋值运算符为右结合;其余大部分运算符为左结合。

3. 不确定运算顺序时,手动添加括号(),可以强制改变运算顺序,同时提升代码可读性。

更多推荐