在Java编程(C语言也一样)过程中,当参数与运算数据类型不一致时,就会进行类型转换。Java中类型转换分为两类:强制类型转换(显示)、自动类型转换(隐式)
自动类型转换:
也可以说是类型提升,数据类型小的会被提升到数据类型大的。
代码不需要经过任何处理,在编译的时候,编译器会自动处理。一般都是低精度的值向高精度的转换。
byte<short<char<int<long<float<double
flaot f=10.5F;
long l=34;
f=l;
//此代码系统认为是正确的,因为是将低精度的l赋值给高精度的f
//若是l=f,则会报错,会数据丢失,不安全(高精度向低精度转换)
强制类型转换:
当进行操作时,代码需要经过一定的格式处理,不能自动完成(高精度向低精度转换)
转换格式:目标类型 变量=(目标类型)变量;
int a=10;
long b=100L;
b=a;//自动转换
a=(int)b;//强制转换
float f=3.14F;
double d=5,14;
d=f;//自动
f=(float)d;//强转
a=d;//报错,类型不兼容
a=(int)d//int没有double范围大,所以需要强转,小数点之后的全部舍弃
//强制转换可能会丢失精度//