Java基础语法--运算符
运算符
- 算术运算符
Sign | 作用 | 例子 |
---|---|---|
+ | 加号或者正号 | 3+5 |
- | 减号或者负号 | 5-3 |
* | 乘法运算 | 5*3 |
/ | 除法运算 | 5/3 |
% | 取余数 | 5%3 |
++i | 先自增再运算 | ++5 |
i++ | 先运算再自增 | 5++ |
--i | 先自减再运算 | --5 |
i-- | 先运算再自减 | 5-- |
+ | 字符串拼接 | "中国" +2020,--->"中国2020" |
- 赋值运算符
常见赋值运算符:=
扩展运算符:+= ,-=,*=,/=,%=,此类赋值运算符不改变原有数据类型
例如:
short i = 5;
i = i +2 // 此处编译报错,左边为short型数据,右边short + int 为int,高到低的赋值要使用强制转换
// 使用扩展赋值运算符就没有这样的错误
short i = 5;
i +=2;
- 比较运算符
Sign | 意义 |
---|---|
< | 小于 |
> | 大与 |
== | 等于 |
!= | 不等于 |
=< | 小于等于 |
>= | 大与等于 |
instanceof | 检查是否是类的对象 eg:"Hello" instanceof String |
比较运算符的结果为逻辑值:false 或者true
- 逻辑运算符
a | b | a&b(逻辑与) | a&&b(短路与) | a|b(逻辑或) | a||b(短路或) | !a(逻辑非) | a^b(逻辑异或) |
---|---|---|---|---|---|---|---|
true | false | F | F | T | T | F | T |
true | true | T | T | T | T | F | F |
false | ture | F | F | T | T | T | T |
false | false | F | F | F | F | T | F |
逻辑与、短路与;逻辑或,短路或结果一样,但是短路运算符,只要前一个条件足够判定结果时,后面的立即被短路,不被执行
逻辑非:即取反
逻辑异或:相异为真
- 位运算符
运算符 | 运算 | 规则 | 荔枝 |
---|---|---|---|
<< | 左移 | 左移一定程度上相当于乘以2的几次方,空位用0补 | 3 << 2 = 12 -- > 3*2*2=12 |
>> | 右移 | 右移一定程度上相当于除以2的几次方,最高位为0空位用0补,最高位为1空位用1补 | 3 >> 1 = 1 -- > 3/2=1 |
>>> | 无符号右移 | 空位用0补 | 3 >>> 1 = 1 --> 3/2=1 |
& | 与运算 | 二进制下,同1取1 | 6 & 3 = 2 |
| | 或运算 | 二进制下,有1取1 | 6 | 3 = 7 |
^ | 异或运算 | 二进制下,为异取1 | 6 ^ 3 = 5 |
~ | 取反运算 | 二进制下,补码按各位取反 | ~6 = -7 |
- 三元运算符
(条件表达式)?表达式1:表达式2
如果条件表达式成立则取表达式1,否则取表达式2
表达式1和表达式2的数据类型应是同类型或者可以统一的,否则报错
比如:表达式1为byte 表达式2 为short 可以统一成int 编译没问题,如果表达式1为String,表达式2位int 则无法统一,程序报错