转换 java 原语,JVM 是否试图节省内存?

Casting java primitives, does the JVM try to save memory?

var foo = (short) 40 + (byte) 10

foo占用多少字节? 它的类型是什么?

我希望结果存储在 short 中,但为了节省内存,JVM 会测试它是否适合较小的原语吗?

如果是(short) 1 + (byte) 1还会是短片吗?

经验法则:整数算术运算long完成,结果为long,如果参数为 long,否则为 int

我还怀疑 JVM 甚至使用 4 个字节来存储 byteshort(以及 boolean)变量 - 请参阅 JVMS 2.6.1. Local Variables and Table 2.11.1-B.


甚至 var test = (byte)1 + (byte)1 将导致 test 成为 int.

var test = (byte)(1 + 1)

并非如此