运算符和表达式
1算数运算符 : + - * / % 有小数参与计算,可能不准确
除法:整数参与计算,结果只能是整数,小数参与,结果小数。
隐式转换(自动类型提升):把取值小的转成大的;
byte short char 三种数据类型在运算时,都直接提升到int,再进行运算 double>float>long>int>short>byte
强制转换:如把取值范围大的数值赋值给取值范围小的变量,是不允许的,需要强制类型转换。
格式:目标数据类型 变量名=(目标数据类型)被强制转的数据
double a = 12.3;
int b = (int)a;
“+”的操作中出现字符串,“+”是字符串连接符,将前后数据拼接,产生新的字符串 “123”+ 123 -> “123123”
连续进行时,从左到右逐个执行
1+99+“年老字号” -> “100年老字号” 1+99 没有字符串,正常加
2自增自减:
a++ 先用后加,后自增 ++a 先加后用,先自增
--
单独写一行没区别
3赋值运算符:
a+=b 即 a = a+b
+= -= *= /= %= 底层都隐藏了一个强制类型转换
== != > < >= <= 结果只有true false
4逻辑运算符:
& 逻辑与(且) 两边都为真,结果为真,相当于乘法
| 逻辑或 两边都为假,结果为假,相当于加法
^ 逻辑异或 相同为false,不同为true
! 逻辑非 取反
5 短路逻辑运算符:
&& 短路与 结果和&相同,但有短路效果
|| 短路或 结果和|相同,但有短路效果
短路:前边可以判断整个运算是true还是false,后面就不运行
6三元运算符:
格式:关系表达式?表达式1:表达式2;
先计算关系表达式的值
真:执行表达式1 假:执行表达式2
输出方法:1把三元运算符的结果赋值给一个变量
2把三元运算符的结果直接打印
7运算符优先级
()优先于所有