【发布时间】:2020-04-23 07:01:45
【问题描述】:
我正在阅读 java OCA 认证文档。 一些原始的操作行为对我来说似乎很奇怪。
据说当用作算术运算的操作数时,所有byte、short 和char 值都会自动扩大到int。这是完全合乎逻辑的。但是当我们使这个操作数最终化时,混乱就来了。
这段代码不会编译(逻辑)
short s1 = 10 ;
short s2 = 20 ;
short sum = s1 + s2;
但是这个会编译
final short s1 = 10 ;
final short s2 = 20 ;
short sum = s1 + s2;
为什么会编译成功?关键字final 的什么属性使这段代码编译?
【问题讨论】:
-
关键字 final 的什么属性使这段代码可以编译? 什么都没有。您正在达到 compiler 优化导致 constant folding.