java基础知识梳理(三):运算符
运算符介绍
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
运算符分类
java运算符大致可以分为以下六种
- 算数运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
- 三元运算符
算数运算符
总体概括
- 加号
+
- 减号
-
- 乘号
*
- 除号
/
- 取模(取余)
%
- 自增
++
- 自减
--
减号-
、乘号*
使用上基本和现实生活中差不多,不做赘述
加号细节
当加号+
两边有一边是字符串时,作用为对字符串进行拼接
1 |
|
除号细节
- 整型变量之间相除,只保留整数位
1 |
|
- 浮点数和整型变量相除,总会保留小数位
1 |
|
取模(取余)细节
取模的本质:a%b=a-a/b*b
1 |
|
自增/自减细节
前置自增/自减
先自增/自减1再取值
1 |
|
1 |
|
后置自增/自减
先取值再自增/自减1
1 |
|
1 |
|
细节
1 |
|
关系运算符
总体概括
- 相等
==
- 不等于
!=
- 小于
<
- 大于
>
- 小于等于
<=
- 大于等于
>=
- 检查是否是类或其子类的对象
instanceof
细节
- 关系运算符的结果都是boolean型
- 关系运算符经常用在if结构或者循环结构的条件中
逻辑运算符
介绍
用于连接多个条件(多个关系表达式),最总的结果也是一个boolean型
总体概括
- 逻辑与
&
- 短路与
&&
- 逻辑或
|
- 短路或
||
- 非
!
- 异或
^
真值表
逻辑运算符的作用基本上可以通过真值表来表明
a | b | a & b | a && b | a | b | a || b | !a | a ^ b |
---|---|---|---|---|---|---|---|
true | true | true | true | true | true | false | false |
true | false | false | false | true | true | false | true |
false | true | false | false | true | true | true | true |
false | false | false | false | false | false | true | false |
细节
短路与和逻辑与的区别
短路与&&
会做逻辑优化,逻辑与&
则不会
与运算逻辑优化
1 |
|
所以短路与&&
效率高,开发中也比较常用
短路或和逻辑或的区别
短路或||
会做逻辑优化,逻辑或|
则不会
因此短路或||
效率高,开发中也比较常用
或运算逻辑优化
1 |
|
异或
1 |
|
赋值运算符
介绍
赋值运算符就是将某个运算后的值,赋给指定的变量
分类
- 基本赋值运算符
=
- 复合赋值运算符
+=
、-=
、*=
、/=
、%=
基本赋值运算符
将=
右边表达式的值赋给左边
复合赋值运算符
对左边表达式进行某种运算
以+=
为例,其他类推
1 |
|
细节
- 赋值运算符的运算顺序从右向左,先计算右边表达式的值,再进行赋值
- 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值
- 复合赋值运算符运算时遵循自动类型转换规则
三元运算符
基本语法
1 |
|
运算规则
1 |
|
当条件表达式为true时,运算后的结果是表达式1的值
当条件表达式为false时,运算后的结果是表达式2的值
细节
表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换)
位运算符
位运算是在补码的基础上进行运算的,但是结果还是要看原码
java没有无符号数,java中的数都是有符号的
~
:按位取反
按位1变0,0变1
&
:按位与
两位全为1,结果为1,否则为0
|
:按位或
两位有一个为1,结果为1,否则为0
^
:按位异或
两位一个为0,一个为1,结果为1,否则为0
<<
:左移运算符
低位溢出,符号位不变,并用符号位补溢出的高位
左移不区分有符号和无符号,都是左移之后右边补上0,最左边的符号位也直接移走
向左边移动一位,相当于乘以2
>>
:右移运算符
符号位不变,低位补0,也称有符号右移
有符号右移就是右移之后,左边的补上符号位,正数补0,负数补1
向右边移动一位,相当于除以2
>>>
:逻辑右移
逻辑右移也叫无符号右移,低位溢出,高位补0
无符号右移就是右移之后,无论该数为正还是为负,右移之后左边都是补上0
注:没有<<<
符号
有符号右移>>
和无符号右移>>>
比较
1 |
|
运算符优先级
编号 | 运算顺序 | 运算符 |
---|---|---|
1 | / | . () {} ; , |
2 | 从右到左 | ++ – ~ !(强制类型转化) |
3 | 从左到右 | *** / %** |
4 | 从左到右 | + - |
5 | 从左到右 | << >> >>> |
6 | 从左到右 | < > <= >= instanceof |
7 | 从左到右 | == != |
8 | 从左到右 | & |
9 | 从左到右 | ^ |
10 | 从左到右 | | |
11 | 从左到右 | && |
12 | 从左到右 | || |
13 | 从左到右 | ? : (三元运算符) |
14 | 从右到左 | *= = /= %= |
15 | 从右到左 | += -= <<= >>= |
16 | 从右到左 | >>>= &= ^= |= |