第11讲:运算符
1. 类型转换概念
1.1 类型转换分类
- 自动类型转换
- 强制类型转换
1.2 自动类型转换
1.2.1 概念
- 把范围小的数值或者变量赋值给另一个范围大的变量。
- 系统会帮我们自动转换,不用我们操作。
1.2.2 各数据类型的范围
- byte<short<int<long<float<double;
- char<int<long<float<double;
1.3 强制类型转换
1.3.1 概念
- 把范围大的数值或者变量赋值给另一个范围小的变量。
1.3.2 转换格式
- 格式:目标数据类型 变量名=(目标数据类型)值或者变量
- 范例:
int k=(int)88.88;
- 注意事项:强制类型转换可能会导致数据精度丢失,所以不建议使用。
2. 算术运算符
2.1 算术运算符的分类
符号 | 作用 | 说明 |
---|---|---|
+ | 加 | |
- | 减 | |
* | 乘 | |
/ | 除 | 得到的是商。 整数相除只能得到整数,要想得到小数,必须要有浮点数的参与。 |
% | 取余 | 得到的是余数 |
2.2 字符的+操作
- 根据ASCII表,字符有对应的数值,是可以用来进行计算的 。
- ‘A’=65; A-Z是连续的。
- ‘a’=97; a-z是连续的。
- ‘0’=48; 0-9是连续的。
- 多个不同类型的值进行运算时,会发生自动类型转换,转成表达式中范围最大的那个。
2.3 字符串的+操作
- 当"+"出现在字符串中时,充当字符串连接符,而不是算术运算符(拼接)
3. 赋值运算符
符号 | 作用 | 说明 |
---|---|---|
= | 赋值 | 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 |
- 进行运算后赋值都有隐藏的自动类型转换机制;
4. 自增、自减运算符
4.1 自增、自减运算符分类
符号 | 作用 | 说明 |
---|---|---|
++ | 自增 | 变量的值+1 |
– | 自减 | 变量的值-1 |
4.2 a++和++a的区别
- 单独使用时:
- 两者结果都一样。
- 参与操作时:
- **a++:**先拿变量去参与运算,然后才自增。
- **++a:**先自增,然后将自增后的值参与运算。
5. 关系运算符
- 关系运算符返回的都是布尔值。
符号 | 说明 |
---|---|
== | 判断是否相等 |
!= | 判断是否不等于 |
> | 判断是否大于 |
>= | 判断是否大于等于 |
< | 判断是否小于 |
<= | 判断是否小于等于 |
6. 逻辑运算符
6.1 逻辑运算符的概述
- 用来连接关系表达式的运算符,也可以直接连接布尔类型的常量或变量。(关系表达式返回的也是布尔值)
6.2 逻辑运算符的分类
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与 | 左右两边都是true,结果为true,否则为false |
| | 逻辑或 | 左右两边都是false,结果为false,否则为true |
^ | 逻辑异或 | 左右两边相同为false,不同为true |
! | 逻辑非 | 相反结果 |
&& | 短路与 | 作用于&相同,但左边为假右边不执行,即短路效果 |
|| | 短路或 | 作用与|相同,但左边为真右边不执行,即短路效果 |
7. 三元运算符
- 格式:关系表达式?表达式1:表达式2;
- 范例:
a>b?a:b;
- 计算规则:
- 首先计算关系表达式的值
- 如果为true,返回表达式1的值
- 如果为false,返回表达式2的值