我正在阅读Java OCA认证文档。一些原始操作的行为对我来说似乎很奇怪。
据说当作为算术运算符的操作数时,所有byte
、short
和char
值都会自动扩展为int
。这是完全合理的。但是当我们将这些操作数声明为final时,就会出现混淆。
这段代码将无法编译(逻辑上不正确)。
short s1 = 10 ;
short s2 = 20 ;
short sum = s1 + s2;
但这个会编译。
final short s1 = 10 ;
final short s2 = 20 ;
short sum = s1 + s2;
为什么这段代码可以成功编译?关键字
final
的什么属性使得这段代码能够编译通过?