当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型。这就是自动类型转换。转换的顺序只能按照图示的规则::
byte short int long
float double
注意细节;
1.有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量很大的那种数据类型,然后在进行运算。
2.当我们把精度大的数据类型转换成精度小的数据类型时,就会报错,反之就会进行自动类型转换。也就是说我们不能把byte类型变成int类型。
3.(byte 和 short)和char 之间不会想换转换。
int n2 = 10;
byte n1 = 10;
//这样是可以赋值的,因为将一个赋值给byte时,我们首先判断
//该数是否在byte的范围内。如果是就可以。
4.boolean 不参与自动转换。
5.自动提升原则:表达式的结果自动题提升为操作数中最大的类型。
6.byte,short,char他们三者可以进行计算,在计算时首先转换成int类型。
第二行运算后的数据类型就变成int类型,再赋值给s(short)就会出现错误。同理,最后一行一样是的。
public class Change{
public static void main(String[] args){
//.byte,short,char他们三者可以进行计算,在计算时首先转换成int类型。
byte n1 = 1;
short n2 = 1;
byte n3 = 2;
short n3 = n1 + n2;//报错,因为n1 + n2会将精度提升为int;int是4字节,而short是2字节,
所以会报错。
byte n4 = n1 + n3; //虽然n1和n3都是byte 但是我们知道只有参与运算,哪怕是同一种
//数据类型,都会将数据转换成int数据类型。
}
}