day_03:运算符
运算符:对字面量或者变量进行操作的符号; 表达式:用运算符把字面量或者变量连接起来,符合java语法的式子就可以称为表达式; 不同运算符连接的表达式体现的是不同类型的表达式。
一、算术运算符
加(+)、减(-)、乘(*)、除(/)、取模/取余(%)
加、减、乘:同小学运算法则,不同的是小数可能不准确,解决办法见进阶篇;
除:整数参与计算只能得到整数,小数参与计算可能不准确,解决办法见进阶篇;
取模(取余):做除法运算,得到余数。
1. 数字相加
数字进行运算时,数据类型不一样不能运算,需要转成一样的,才能运算。
隐式转换:
取值范围大到取值范围小(不需要自己写代码)。
隐式转换的两种提示规则:
- 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
强制转换:
取值范围小到取值范围大(需要自己写代码)
如果把一个取值范围大的数值,赋值给取值范围小的变量,是不允许直接赋值的,如果一定要这么做就需要加入强制转换。 格式:目标数据类型变量名=(目标数据类型)被强转的数据;
java
byte a = 12
int b = (int) a2. 字符串相加
- 当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符了。会将前后的数据进行拼接,并产生一个新的字符串。
- 连续进行"+"操作时,从左到右逐个执行。
3. 字符相加
当字符+字符或字符+数字时,会把字符通过ASCII码表查询到对应的数字再进行计算。
二、自增自减运算符
单独使用:
符号 作用 说明 ++ 加 变量的值加一 -- 减 变量的值减一 ++和--无论是放在变量的前边还是后边,单独写一行结果是一样的。
参与计算:
- 符号在后,先用后加
- 符号在前,现加后用
三、赋值运算符
| 序号 | 作用 | 说明 |
|---|---|---|
| = | 赋值 | int a = 10,将10赋值给变量a |
| += | 加后赋值 | a += b,将a b的值给a |
| -= | 减后赋值 | a -= b,将a-b的值给a |
| *= | 乘后赋值 | a *= b,将a*b的值给a |
| /= | 除后赋值 | a /= b,将a-b的商给a |
| %= | 取余后赋值 | a %= b,将a-b的余数给a |
细节:
+=,-=,*=,/=,%=底层都隐藏了一个强制类型转换
java
short S = 1;
S += 1;
//等同于:s=(short)(s+1);
System.out.println(s);四、关系运算符
也叫比较运算符。
| 符号 | 说明 |
|---|---|
| == | a == b,判断a和b的值是否相等,成立为true,不成立为false |
| != | a != b,判断a和b的值是否不泪等,成立为true,不成立为false |
| > | a > b,判断a是否大于b,成立为true,不成立为false |
| >= | a >= b,判断a是否大于等于b,成立为true,不成立为false |
| < | a < b,判断a是否小于b,成立为true,不成立为false |
| <= | a <= b,判断a是否小于等于b,成立为true,不成立为false |
注意事项
关系运算符的结果都是boolean类型,要么是true,要么是false。
五、逻辑运算符
| 符号 | 作用 | 说明 |
|---|---|---|
| & | 逻辑与(且) | 并且,两边都为真,结果才是真 |
| | | 逻辑或 | 或者,两边都为假,结果才是假 |
| ^ | 逻辑异或 | 相同为false,不同为true |
| ! | 逻辑非 | 取反 |
短路逻辑运算符
| 符号 | 作用 | 说明 |
|---|---|---|
| && | 短路与 | 结果和&相同,但是有短路效果 |
| || | 短路或 | 结果和|相同,但是有短路效果 |
注意事项
- &,|:无论左边true还是false,右边都要执行;
- &&,||:如果左边能确定整个表达式的结果,右边不执行;
- &&:左边为false,右边不管是真是假,整个表达式的结果一定是false;
- ||:左边为true,右边不管是真是假,整个表达式的结果一定是true;
- 这两种情况下,右边不执行,提高了效率;
- 最常用的逻辑运算符:&&,||,!
六、三元运算符
- 格式:关系表达式 ? 表达式1 : 表达式2;
- 计算规则:
- 首先计算关系表达式的值
- 如果值为true,表达式1的值就是运算结果
- 如果值为false,表达式2的值就是运算结果
七、运算符优先级
括号优先级最高,先算的加括号。
| 优先级 | 运算符 |
|---|---|
| 1 | . () {} |
| 2 | ! ~ ++ -- |
| 3 | * / % |
| 4 | + - |
| 5 | << >> >>> |
| 6 | < <= > >= instanceof |
| 7 | == != |
| 8 | & |
| 9 | ^ |
| 10 | | |
| 11 | $$ |
| 12 | || |
| 13 | ? : |
| 14 | = += -= *= /= %= &= |