关于类型的自动提升,遵循下边的规则:
所有的 byte 、 short 、 char 类型的值将提升为 int 类型;
如果有一个操作数是 long 类型,计算结果是 long 类型;
如果有一个操作数是 float 类型,计算结果是 float 类型;
如果有一个操作数是 double 类型,计算结果是 double 类型;
顺序: byte -> short(char) -> int -> long -> float -> double
当两个类型进行自动转换的时候,需要满足条件:【 1 】这两种类型是兼容的,【 2 】目的类型的数值范围应该比源转换值的范围要大。而拓展范围就遵循上边的自动类型转换树,当这两个条件都满足的时候,拓展转换才会发生,而对于几个原始类型转换过程,根据兼容性 boolean 和 char 应该是独立的,而其他六种类型是可以兼容的,在强制转换过程,唯独可能特殊的是 char 和 int 是可以转换的,不过会使用 char 的 ASCII 码值比如:
int a = (int)'a';
a 的值在转换过后输出的话,值为 97 ;
|