编译时常量只能在函数之外定义。这是因为,编译时常量必须在编译时(程序编译时)赋值,而 函数都是在运行时(程序运行时)才调用,函数内的变量也是在那时赋值。编译时常量要在这些变量赋值前就已存在。
编译时常量只能设置基本数据类型:String、Int、Double、Float、Long、Short、Byte、Char、Boolean。
和 const 修饰符一起使用的 val 告诉编译器, MAXVALUE 常量值绝对不会改变。这也就是说,无论如何,整数值 100要绝对保证不变。
可以看下反编译成java代码:
本质上就是定义了一个 static final的 常量了。