onstantes e variáveis em tempo de compilaç

documentação da linguagem Java diz:

Se um tipo primitivo ou uma sequência de caracteres é definida como uma constante e o valor é conhecido no momento da compilação, o compilador substitui o nome da constante em qualquer lugar do código pelo seu valor. Isso é chamado de constante em tempo de compilaçã

Meu entendimento é se tivermos um pedaço de código:

private final int x = 10;

Em seguida, o compilador substituirá todas as ocorrências dex no código com literal10.

Mas suponha que a constante seja inicializada no tempo de execução:

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

Haverá uma queda no desempenho (por mais desprezível que seja) em comparação com a constante em tempo de compilaçã

Outra questão é se a linha de código abaixo:

private int y = 10; // here y is not final

é tratado da mesma maneira que a constante em tempo de compilação pelo compilado

Finalmente, o que eu entendo das respostas são:

final static significa constante em tempo de compilaçãosomentefinal significa que é uma constante, mas é inicializado em tempo de execuçãosomentestatic significa inicializado no tempo de execuçãowithoutfinal é uma variável e não seria tratado como constant

Meu entendimento está correto?

questionAnswers(14)

yourAnswerToTheQuestion