类型转换(cast)
在java中,我们可以声明一个int类型的变量,然后为其赋予一个float类型,发现可以实现,这就是类型转换,即不同数据类型可以相互转换,但也有不可以,如布尔型。我总结了以下几点:
***1.***窄化转换,即容纳信息多的数据类型转化为信息少的数据类型,如int转化为short,double转化为float,这样的转换容易导致原本的数据信息会不够存,所以可能会发生信息丢失。所以java在这里会要求强制转换
int x=10;
~~short y=x;~~ //这样没有强制转换会报错的
short y=(short)x;
double a=10.6;
int b=0;
b=(int)a//这里虽然强制转换了,但是会导致信息丢失,当浮点数转化为整数时,小数部分会取消,而且会向下取整,即结果是10
//当然如果想要取舍的话。可以选择Math库中的round()方法
***2.***扩展转化,即容纳少信息的数据类型转化为容纳多的数据类型。如char,short,转化为int,long等;在这里不需要担心数据信息会丢失。而且也不需要强制转换,这里java会自动转换。
***3.***如果基本数据类型执行算术运算或者按位运算的话,只要类型比int小的类型如(char,short)会自动转化为int类型来在运算之前,当然最终生成的结果也是int型,当然如果想要赋值给较小的数据类型在进行强制类型转换。
***4.***表达式中最大的数据类型决定了最终结果的数据类型,如float值与double值得话,最终结果是double型的。
***5.***除了布尔型以外,任何一种基本数据类型都可以通过类型转换为其他基本类型。