Константы и переменные времени компиляции

Документация по языку Java гласит:

Если примитивный тип или строка определены как константа, а значение известно во время компиляции, компилятор заменяет имя константы везде в коде на его значение. Это называется константой времени компиляции.

Я понимаю, если у нас есть кусок кода:

private final int x = 10;

Затем компилятор заменит каждое вхождениеx в коде с литералом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 является переменной и не будет рассматриваться как константа.

Правильно ли мое понимание?

Ответы на вопрос(7)

Ваш ответ на вопрос