基本数据类型自动转换(隐式转换)的顺序为:
byte --> short --> int --> long --> float --> double;
char --> int --> long --> float --> double;
在没有强制转换的情况下,数据类型只能从左往右(即从小往大)转换。byte、short和char之间不能相互转换,但它们可以运算,当byte、short和char类型互相运算时,会将运算结果转换成int类型。
以打印26个大写字母为例:
public static void main(String[] args) {
char[] letter = new char[26];
for (byte i = 0; i < letter.length; i++) {
letter[i] = 'A' + i;
}
for (int j = 0; j < letter.length; j++) {
System.out.print(letter[j] + "\t");
}
}
}
结果报错:从int转换到char可能会有损失。
说明'A'+i已经运算成功并把结果自动转换成了int。
尝试用short:
更换成short报同样的错,说明byte、short和char可以运算,但会将结果转换成int,而int不能自动转换成char类型,因此报错。
使用强制转换:
运行成功。
总结:byte、short和char之间不能自动转换,可以相互运算,但结果会自动转换成int类型。实际上byte和byte,byte和short,short和short之间的运算都会将结果自动转换成int类型。