运算符
运算符与表达式
运算符
对字面量或者变量进行操作的符号
表达式
用运算符把字面量或者变量连接起来,符合java语法的式子就可以称为表达式
不同运算符连接的表达式体现的是不同类型的表达式
算数运算符
| 符号 | 作用 |
|---|---|
| + | 加 |
| - | 减 |
| * | 乘 |
| / | 除 |
| % | 取模、取余 |
-
在代码中如果有小数参与计算,结果有可能不精确
-
整数参与计算,结果只能是整数
-
如果想要有小数,必须要有小数参与计算
+ 操作的三种情况
数字相加
数字进行运算的时候,数据类型不一样不能运算,需要转成一样的,才能运算
类型转换的分类
隐式转换(自动类型提升)
把一个取值范围小的数据,转成取值范围大的数据
隐式转换的两种提升规则
- 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
- byte short char 三种类型的数据再运算的时候,都会直接先提升为int,然后再进行运算
强制转换
如果把一个取值范围大的数值,赋值给取值范围小的变量
是不允许直接赋值的,如果一定要这么做需要加入强制转换
格式:
//目标数据类型 变量名 = (目标数据类型) 被强转的数据
double a = 12.3;
int b = (int)a;
字符串相加
- 当 ” + “ 操作中出现字符串时,这个 ” + “ 是字符串连接符,而不是算数运算符了,会将前后的数据进行拼接,并产生一个新的字符串
- 连续进行 ” + “ 操作时,从左到右逐个进行
字符相加
当 字符+字符 或 字符+数字 时,会把字符通过ASCII码表查询到对应的数字再进行运算
自增自减运算符
| 符号 | 作用 | 说明 |
|---|---|---|
| ++ | 加 | 变量的值加1 |
| -- | 减 | 变量的值减1 |
注意事项:
++和--既可以放在变量的前边,也可以放在变量的后边
单独使用:
++和--无论是放在变量的前边还是后边,单独写一行结果是一样的
赋值运算符
| 符号 | 作用 | 说明 |
|---|---|---|
| = | 赋值 | 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 |
注意指向:扩展的赋值运算符隐含了强制类型转换
关系运算符
| 符号 | 说明 |
|---|---|
| == | 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
- 这两种情况下,右边不执行,提高了效率
- 最常用的逻辑运算符:&&,||,!
三元运算符
格式:
关系表达式 ? 表达式2 : 表达式2;
//求两个数的较大值
int max = (a > b ? a : b);
计算规则:
- 首先计算关系表达式的值
- 如果值为true,表达式1的值就是运算结果
- 如果值为false,表达式2的值就是运算结果
运算符优先级
| 优先级 | 运算符 |
|---|---|
| 1 | . () {} |
| 2 | ! - ++ -- |
| 3 | * / % |
| 4 | + - |
| 5 | << >> >>> |
| 6 | < <= > >= instanceof |
| 7 | == != |
| 8 | & |
| 9 | |
| 10 | | |
| 11 | && |
| 12 | || |
| 13 | ? : |
| 14 | = += -= *= /= %= &= |