数据类型的转换是保证数据精确度的一种手段。
- 2个基本事实
- 自动转化
- 强制转化
- 编译器的优化
2个基本事实事实
-** 浮点数常量默认为double**
float a=3.5;// 此处将会由doube-->float造成数据丢失
自动转化
转化原则:数据类型的取值范围小的自动转化为数据类型取值大的,大的转化为小的需要强制转化
特例:char 和short,char 和byte之间都不能进行相互转化
byte a=4;
int b=a;//byte-->int 大-->小 自动转化
强制转化
1.int a=5;
byte b=(byte)a;//int-->byte 小-->大 强制转化 a的值小于b的取值范围 不会出现数据损失
2.int a=129
byte b=(byte)a//该处和上面一样 但129超出了byte的取值范围 会出现数据损失
编译器的优化处理
当byte char short或者他们与整形常量之间之间的任意2个进行计算时,编译器为了保证其得到的结果不溢出,会将其计算答案转化成int数据类型
该处容易被认为了常量默认为int byte和int计算byte转为int 最后答案为int 这样理解不对
只有将其整体转化才行
这样才不会报错