Java语言文档说:
如果将原始类型或字符串定义为常量,并且在编译时知道该值,则编译器会使用其值替换代码中各处的常量名称。这称为编译时常量。
我的理解是,如果我们有一段代码:
private final int x = 10;
然后,编译器会将x代码中每次出现的内容替换为literal 10。
但假设常量在运行时初始化:
private final int x = getX(); // here getX() returns an integer value at run-time.
与编译时常数相比,性能是否会下降(无论可以忽略不计)?
另一个问题是下面的代码行:
private int y = 10; // here y is not final
被编译器以与编译时常量相同的方式处理?
最后,我从答案中了解到的是:
final static 表示编译时常数
只是final意味着它是一个常量,但是在运行时初始化
只是static意味着在运行时初始化
没有final是变量,不会被视为常量。
我的理解正确吗?
交互式爱情
犯罪嫌疑人X
哆啦的时光机