Java中不同的数据类型能够进行混合运算,例如整数1可以和浮点数0.5进行相加,要让最后的结果显示为浮点数,就要使用浮点数据类型,如果用整数型来定义结果,那么1+0.5所显示的结果仍然为整数,但要注意,这种自动运算只能由范围小转换到范围大的,称为自动类型转换。
public class Demo{
public static void main(String []args){
int oldNum=1;
double oldNum2=0.5;
double newNum=oldNum+oldNum2;
System.out.println(newNum);
}
}
这时输出的结果即为1.5,但是不能将newNum前的double改为int,因为double占8字节空间,int只占4字节,,你没法让大象自己钻到冰箱里。
自动类型转换又叫做隐式转换,从小到大的依次转换顺序为:
byte→short→char→int→long→float→double
除了自动类型转换外,还有强制类型转换,正是用来应付自动转换无法转换过去的情况,让较大的数据类型转换成较小的,通用格式如下
(要转换成的数据类型)被转换的数。 例如
public class Demo2{
public static void main(String []args){
double a=1.123
int b;
b=(int)a; //将double型变量a转换成了int型
System.out.println(b);
}
}
最终输出的b的值为1,显然,强制转换会导致数值失去一定的精确度,所以在没必要的时候尽量不使用强制类型转换。
另外,不是所以类型都能互相强制转换,上例的double可以转换成int是因为本质上他们的值都是数字,而boolean就不能与数字值互相转换,因为boolean的值只有true和false,说白了就是真假的判断,怎么能让他强制变成数字呢?