Java中常见的基本整数数据类型:
从小到大依次:byte(8) short(16) int(32) long(64)
从小到大转换会自动转换,例如:byte b = 1; int i = b + 2;
这里将byte类型赋值给int,实现了由小到大自动类型转换(隐式);
short i = 1+1;
System.out.println(i);
此代码涉及类型强制转换(由将int类型赋值给short),正确写法是:
short i = (short) 1+1;
但是在IDEA中上述没有写强制转换的(short),也没有报错,原因是:
Java有一个特殊的规则,称为“常量表达式优化”或“常量折叠”。当编译器在编译时能够确定一个算术表达式或逻辑表达式的值是一个常量,并且这个值能够安全地赋给一个较小的数据类型时,编译器会自动进行这个类型转换,而不会报错。
常量表达式优化:确定常量,安全赋值,则自动转换。