相关疑难解决方法(0)

编译时常量和变量

Java语言文档说:

如果将基本类型或字符串定义为常量并且在编译时已知该值,则编译器会将代码中的常量名称替换为其值.这称为编译时常量.

我的理解是,如果我们有一段代码:

private final int x = 10;
Run Code Online (Sandbox Code Playgroud)

然后,编译器将x用文字替换代码中的每个匹配项10.


但假设常量在运行时初始化:

private final int x = getX(); // here getX() returns an integer value at run-time.
Run Code Online (Sandbox Code Playgroud)

与编译时常量相比,是否会出现性能下降(无论可能忽略不计)?


另一个问题是以下代码行:

private int y = 10; // here y is not final
Run Code Online (Sandbox Code Playgroud)

编译器以与编译时常量相同的方式处理?


最后,我从答案中理解的是:

  1. final static 表示编译时常量
  2. 只是final意味着它是一个常量但在运行时被初始化
  3. 只是static意味着在运行时初始化
  4. 不是final变量,不会被视为常量.

我的理解是否正确?

java performance final constants compile-time-constant

37
推荐指数
2
解决办法
3万
查看次数