JAVA中,char(两字节) short(两字节) byte(一字节) 这三者之间,只有byte->short可以自动转型,其他方向都是不会自动转的
虽然按照惯例,容量大的不能自动转换为容量小的,下面的程序会报错:
但是下面则正确编译了(整形字面量类型为int)
编译器发现右边是字面量而不是变量时,会判断一下是否超过了byte的表示范围,如果没有的话就不会出错
正如前言,以下程序也是正确的
但是,下面的程序却是错误的(小数字面量类行是double)
1.1并没有超过float的表示范围,却被判定无法自动转换
这是因为前面的例子都是整型,在不超过表示范围的情况下发生这种转换是安全的
而浮点型存在【精确度】的问题
double类型的字面量,虽然没有超出float的表示范围,在转换后仍旧会