La documentación del lenguaje Java dice "Si un tipo primitivo o una cadena se define como una constante y el valor se conoce en tiempo de compilación, el compilador reemplaza el nombre constante en todas partes en el código con su valor. se llama una constante de tiempo de compilación ".Constantes y variables de tiempo de compilación
Así que mi entendimiento es que si tenemos un trozo de código:
private final int x = 10;
A continuación, el compilador reemplazará todas las apariciones de 'x' en el código con el literal '10'. Pero supongamos que dicen la constante se inicializa con el valor en tiempo de ejecución,
private final int x = getX(); // here getX() returns an integer value at run-time.
Habrá alguna caída de rendimiento (independientemente de cuál sea insignificante) que puede ser comparada con la constante de tiempo de compilación?
Otra cuestión es si la línea debajo de código:
private int y = 10; // here y is not final
es tratado de la misma manera constante por el compilador tiempo de compilación?
EDIT: Por último, lo que entiendo de las respuestas son:
final static
medios de compilación constante de tiempo- simplemente
final
significa que es una constante, sino que se ha inicializado en tiempo de ejecución - simplemente
static
significa inicializado en el tiempo de ejecución - sin
final
es una variable y no se tratará como constante.
es mi entendimiento correcto?
sobre el punto 2. ¡Estás equivocado! final int a = 1; a es una constante de tiempo de compilación. final int b; b = 1; b no es – landry