
Java中的数据类型转换只能是相同大类里占内存空间大小不同的类型之间的的转化
int a=10;
long b=20;
a=b;
这样是会报错的,编译器会显示从long转换到int可能会有损失
所以我们需要进行强制类型转换将b的值赋给a
int a=10;
long b=20;
a=(int)b;
加一个括号表示强制将b的类型转化为int
但是强制类型转换不能将毫不相干的两个类型进行转换
int a=10;
boolean b=true;
a=b;
a=(boolean)b;
上面两种赋值方式编译器都会报错,提示类型不兼容
所以只有相同类型的元素才可以进行类型转换
int a=10;
long b=20;
b=a;
这样编译器不会报错,会自动将a的类型提升成为long
当我们在进行计算的时候,多种类型混合在一起会自动将小的类型隐式提升为大的类型的
int a=10;
int b=20;
double c=5.3;
*若计算c+a/b;
a/b整型之间相互计算是整型得0
c+0将0整形提升为浮点型得到的结果是5.3
*若表达式写为c+(double)a/b
这样a先被转换为double型,b也会随之转换,a/b得到的结果变为0.5,最后再和c相加得到5.8