基本java变量
我正在阅读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
的什么属性使这段代码可以编译
# 1 楼答案
它生成s1和s2编译时常量表达式,因此加法是由编译器完成的,而不是在运行时,因此代码相当于
因此,编译器能够知道分配给
sum
的值足够小,可以放入一个短字符串中,因此它进行编译