Au moment de la compilation des constantes et des variables

Le langage Java documentation dit:

Si un type primitif ou une chaîne de caractères est défini comme une constante et la valeur
est connu au moment de la compilation, le compilateur remplace le nom de constante
partout dans le code, avec sa valeur. Ceci est appelé au moment de la compilation
constante.

Ma compréhension est que si nous avons un morceau de code:

private final int x = 10;

Ensuite, le compilateur remplace chaque occurrence de x dans le code avec littérale 10.


Mais supposons que la constante est initialisé au moment de l'exécution:

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

Une chute des performances (quelle qu'en soit négligeable, il peut être) par rapport à la constante de compilation?


Une autre question est de savoir si les dessous de la ligne de code:

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

est traitée de la même manière constante à la compilation par le compilateur?


Enfin, ce que je comprends de l'réponses sont:

  1. final static signifie constante à la compilation
  2. juste final signifie que c'est une constante, mais est initialisé au moment de l'exécution
  3. juste static signifie initialisé au moment de l'exécution
  4. sans final est une variable et ne pas être traitées comme constante.

Est ma compréhension correcte?

  • sur le point 2. Vous vous trompez! final int a =1; a est la compilation constante de temps. final int b; b =1; b n'est pas
InformationsquelleAutor NINCOMPOOP | 2012-01-31