一、基本数据类型的转换
1.不同的基本数据类型之间进行运算时需要进行类型转换。
注:boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换), 否则,将编译出错。 经验2:基本数据类型的类型转换主要在赋值运算、算术运算时发生。
转换方式有两种:自动类型转换和强制类型转换
1)规则1:如果一个操作数为double型,则整个表达式可提升为double型
规则2:满足自动类型转换的条件 ,两种类型要兼容: 数值类型(整型和浮点型)互相兼容, 目标类型大于源类型
默认转换(从小到大的转换)
byte,short,char—int—long—float—double
byte,short,char相互之间不转换,他们参与运算首先转换为int类型
byte a = 15;
byte b = 100;
byte c = a + b; //java中数值计算默认使用int类型,得到结果是int类型,所以不能直接使用byte接收
byte c = (byte)(a + b);
short e = 15;
short f = 100;
short g = e + f; //报错原因同上,因为byte与short取值范围比int小
short g = (short)(e + f);
long h = 15;
long i = 100;
long j = h + j; //此代码不会报错,因为long类型取值范围比int大
byte num = '0'; //char类型可以跟byte类型进行转换,原因:涉及到ASCLL取值,且取值范围是0-127,但并不绝对
char ch = '0'
byte chByte = ch; //char类型的变量不能赋值给byte类型的变量,但char值可以直接赋值给byte类型的变量
二、逻辑运算符
位运算符
注意:位运算符的操作数都是整型数,包括int、short、long、byte和char
位运算符的运算结果也都是整型数,包括int、long
如果操作数是char、byte、short,位运算前其值会自动晋升为int,运算结果也为int
位运算符对操作数以二进制为单位进行运算
运算符的优先级
优先级别最低的是赋值运算符
单目运算符包括! ~ ++ --,优先级别高
可以通过()控制表达式的运算顺序,()优先级最高
总体而言,优先顺序为算术运算符 > 关系运算符 > 逻辑运算符
从右向左结合性的只有赋值运算符、三目运算符和单目运算符
总结