一、报错篇
float b = 3.5;
在此处会因为由double类型转化为float类型,精度将降低,将造成数据损报错。
int a = 1;
byte b = a;
byte c = 128;
在上述代码也会因为数据转换而报错,即使a的值没有大于127(注意上面c的值是不能被赋予128的会报错),因为虽然对计算机来说常量的值是在编译时就知道的,而变量的值是在运行的时候才一步一步就知道的。
二、改进方案
float c = 3.5f, d = 0;
int a = 1;
byte b = (byte)a;
但可以进行强制类型转换,向计算机声明a是小于127,可以被其看做是byte类型的。
并且在初始化时如果一个float类型数是0时不用写0f。
三、系统自动处理
在Java语言中系统会自动将+=, -=, /=, *=等赋值运算符的等式进行强制类型转换。
short a =128;
byte b =(byte) a;
上诉代码a = 128, b = -128;