基本数据类型之间的运算规则;
前提:只运算7种数据类型,不包含boolean
1、自动类型提升:当容量小的数据类型的变量和容量大的数据类型的变量做运算的时候,结果自动提升为容量大的数据类型。
byte、char、short --> int --> long --> float -->double
2、强制类型转换:自动类型提升运算的逆运算。
1、需要使用强转符:(),如
double d1 = 12.9;
int i1 = (int)d1;
2、注意点:强制类型转换会导致精度损失。
5、运算符:
算术运算符
基本算术运算符:+ 、-、*、/、%、++、--;
++:前++,先自增,后运算;
后++,先运算,后自增。
--:前--,先自减,后运算;
后--,先运算,后自减。
符合算术运算符:+=、-=、*=、/=、%=;
num+=10;//(变量数据类型不变)
num = num + 10;
赋值运算符
变量名 = 表达式;
int num1 = 2;
int num2 = 3;
实现两个变量的数据交换:
1、定义临时变量
int temp = num1;
num1 = num2;
num2 = temp;
2、
num1 = num1 + num2;
num2 = num1 – num2;
num1 = num1 – num2;
好处:不用定义临时变量
弊端:相加操作会超出存储范围、有局限性,只适用于数值类型。
3、使用位运算符
有局限性,只适用于数值类型。
num1 = num1^num2;
num2 = num1^num2;
num1 = num1^num2;
比较运算符(关系运算符)
结果为布尔型,true、false
等于:==,不等于!=,(大于>,小于<,大于等于>=,小于等于<=)优先级更高、只支持数值类型数据比较。
逻辑运算符
逻辑与&、短路与&&、逻辑或|、短路或||、异或^、非!
结果都为布尔型
&和|,两边都要执行
&&当左边为false时,右边不需要执行
||当左边为true时,右边不需要执行
位运算符
位运算是直接对整数的二进制进行的运算
左移<<;右移>>;无符号右移>>>;与运算&;或运算|;异或运算^;取反运算~
三元运算符
格式;(条件表达式)?表达式1:表达式2;
条件表达式为true,则运算表达式1;
条件表达式为false,则运算表达式2。
表达式1要能和表达式2统一为一个类型
三元运算符可以嵌套使用,都可以改写成if else
运算符的优先级:
-
单目运算符包括! ++ --,优先级别高
-
优先级别最低的是赋值运算符
-
可以通过()控制表达式的运算顺序,()优先级最高
-
从右向左结合性的只有赋值运算符、三目运算符和单目运算符
-
算术运算符 > 关系运算符 > 逻辑运算符