一.数据类型转化
前提:不同数据之间进行运算时要进行类型转换
注:1.boolean不能进行转换。
2.类型转换一般用于赋值运算和算术运算。
3.类型转换分为自动类型转换和强制类型转换。
1.自动类型转换
转换的前置条件:1.两种类型要兼容。
2.目标类型大于源类型。
注:1.类型转换中大小关系:byte,short,char—int—long—float—double。
2.byte,short,char相互之间不转换,他们参与运算首先转换为int类型。
2.强制转换类型
即在数据类型前小括号并加入要强制转换的类型。
注:特殊情况byte
2.1程序
2.2输出结果
注释:byte的强制转换设计到补码和反码,这里暂不了解以待后续补充;方法是用未转换类型的数据去减或加256直到不够减或者加256得到的数据就是强转byte的数据类型。
二.运算符
1.关系运算符
注:1.结果为布尔值!!!!!!!
2.只有==,!=支持所有数据类型的转换。
关于Boolean的运用:
是先给boolean赋值(常用的布尔赋值就是flag),然后再判断flag是否和已知结果相等或者不等,然后得出的flag----即是(true)或否(false)
2.逻辑运算符
注:1.分清短路与逻辑的区别,短路所用的都是两个字符,所以短路要求必须两侧都为true。
2.短路逻辑要切记!左边为false,右边不计算,见下图
3.其中只有^运算规则是结果相同为false。
3.位运算符
注:1.位运算符的操作数都是整型数,包括int、short、long、byte和char。
2.位运算符的运算结果也都是整型数,包括int、long。
3.如果操作数是char、byte、short,位运算前其值会自动晋升为int,运
算结果也为int。
4.位运算符对操作数以二进制为单位进行运算。
其中:关于左移和右移
左移即将数字的二进制表达左移一格
例如6:0000 0110 左移:0000 1100 即12(这样是快速乘以2)故右移则
6:0000 0110 右移:0000 0011 即3(快速除以2)
注释:无符号右移和右移,在右移中负数是符号位补1,而无符号右移则是补0(目前只知道这一条不同后续以待补充)
4.条件运算符
条件运算符技巧记法:你有女朋友么?幸福的人:单身狗
条件运算符也称作三目(三元)运算符
5.总结
关于运算符的优先级
1.最低的是赋值运算符
2.单目运算符包括!~ ++ --,优先级高
3.可以通过()调整优先级,()的优先级最高
4.总体来看,算术>关系>逻辑
5.从右向左结合性的只有赋值运算符、三目运算符和单目运算符
关于运算符
1.其中b为byte数据类型。
注释:看第一行中1默认为int数据类型,所以两者相加数据类型改变为int(自动晋升),不能赋值给byte;第二行则是先赋值,这时候1已经赋值给了b成为了byte数据类型。
2.关于精度。
注释:第一行中98.36已经是单精度数据了;而第二行中的98.36则是双精度数据,强行转换成单精度数据的时候丢失了精度。即两者的区别————强转注意丢失精度。