运算符和表达式概述
-
运算符:对常量或者变量进行操作的符号
-
表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式
不同运算符连接的表达式体现的是不同类型的表达式 -
举例说明:
int a = 10;
int b = 20;
int c = a + b;+:是运算符,算术运算符
a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式
1、算术运算符
1.1 注意事项:
①/ 和 % 的区别:两个数据做除法,/ 取结果的商,% 取结果的余数
②整数操作只能得到整数,要想得到小数,必须有浮点数参与运算
1.2 数值拆分:
需求:给定一个三位数,将其拆分为个位、十位、百位后,打印在控制台
分析:
①个位的计算:数值 % 10
②十位的计算:数值 / 10 % 10
③百位的计算:数值 / 10 / 10 % 10
1.3 字符的+操作
拿字符在计算机底层对应的数值来进行计算的
- ‘A’ 65 A-Z是连续的
- ‘a’ 97 a-z是连续的
- ‘0’ 48 0-9是连续的
算术表达式中包含多个基本数据类型的值的时候,整个算术表达式的类型会自动进行提升
提升规则:
- byte类型,short类型和char类型将被提升到int类型
- 整个表达式的类型自动提升到表达式中最高等级操作数同样的类型
等级顺序:byte,short,char -> int -> long -> float -> double
1.4 思考?
请问下面的运算结果都是什么类型的?
10 + ‘A’的结果:
10+10.0F的结果:
10+10.0的结果:
10 + ‘A’的结果:int类型
10+10.0F的结果:float类型
10+10.0的结果:double类型
1.5 字符做+操作
拿字符在计算机底层对应的数值来进行计算的
表达式类型提升
整个表达式的类型自动提升到表达式中最高等级操作数同样的类型
当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算
“zhongguo”+ 666
在“+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算
当连续进行“+”操作时,从左到右逐个执行
1 + 9999 + “岁zhongguo”
1.6 类型转换分类
- 显示类型转换
也叫强制类型转换
把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
格式:数据类型 变量名 = (目标数据类型)(数值或者变量)
范例:int k = (int)88.88;
注意:显示转换的数据可能丢失精度
- 隐式类型转换
2、赋值运算符
2.1 赋值运算符的种类:
基本赋值运算符
=
扩展赋值运算符(除了=其他的赋值运算符)
注意事项:
除了=是赋值运算符,其他都是扩展的赋值运算符。
扩展的赋值运算符隐含了强制类型转换
2.2 思考
请问下面的程序有错误吗?如果有是哪一行?为什么?
① byte b = 10;
② b = b + 1;
③ b += 1;
程序有问题
第②行会出错
b是byte类型,和int类型的1做加法,根据表达式类型提升,结果是int类型
③之所以不出错,是因为+=隐含了强制类型转换,最终把int类型结果转为了byte类型
3、自增自减运算符
注意事项:
①++和–既可以放在变量的后边,也可以放在变量的前边
②单独使用的时候,++和–无论是放在变量后边,还是变量的前边,结果是一样的
③参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者–
参与操作的时候,如果放在变量的前边,先拿变量做++或者–,后拿变量参与操作
最常见的用法:单独使用
4、关系运算符
注意事项:
① 关系运算符的结果都是boolean类型,要么是true,要么是false
② 千万不要把“==”写成了“=”
5、逻辑运算符
5.1 逻辑运算符概述
在数学中,一个数据x,大于3,小于6,我们可以这样来进行表示:3 < x < 6
在Java中,需要把上面的式子先进行拆解,再进行合并表达
拆解为:x > 3 和 x < 6
合并后:x > 3 && x < 6
&&其实就是一个逻辑运算符
我们可以这样说,逻辑运算符,是用来连接关系表达式的运算符
当然,逻辑运算符也可以直接连接布尔类型的常量或者变量
5.2 逻辑运算符
5.3 短路逻辑运算符
注意事项:
①逻辑与&,无论左边真假,右边都要执行
短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行
②逻辑或|,无论左边真假,右边都要执行
短路或||,如果左边为假,右边执行;如果左边为真,右边不执行
最常用的逻辑运算符:&&,||,!
6、三元运算符
格式:关系表达式 ?表达式1 :表达式2;
范例:a > b ? a : b;
运算规则:
首先计算关系表达式的值
如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果