有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

基本java变量

我正在阅读java OCA认证文档。 一些原始的操作行为对我来说真的很奇怪

据说,当用作算术运算的操作数时,所有的byteshortchar值都会自动扩大到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) 个答案

  1. # 1 楼答案

    它生成s1和s2编译时常量表达式,因此加法是由编译器完成的,而不是在运行时,因此代码相当于

    short sum = 30; 
    

    因此,编译器能够知道分配给sum的值足够小,可以放入一个短字符串中,因此它进行编译