notes·de·pit

Parfois j'apprends à pêcher à des gens qui n'aiment pas le poisson

Utilisation de constantes en Java

Lorsque je veux utiliser plusieurs fois la même valeur dans un code, plutôt que d’écrire à chaque fois sa valeur littérale (exemple, 42), je déclare une constante (exemple, N) à laquelle j’associe la valeur qui m’intéresse.

Partout dans le code, une occurrence de N sera remplacée par 42.

public static final int N = 42;

Lorsque l’on utilise une constante dans une classe, que fait le compilateur 1 lorsqu’il génère le bytecode ? Comment “remplace-t-il” toutes les occurrences de N par 42 ?

Cette question provient du fait que la syntaxe permettant l’écriture d’une constante en java est la même, au mot clé final près que pour l’écriture d’une variable… alors…

C’est ce deuxième choix qui est fait par le compilateur.

Soient les deux codes suivants

public class Constant { 
      public static final int N = 42;
}
public class Use { 
     public static void main ( String[] args ) { 
           System.out.println("Constante: " + Constant.N);
     }
}

Essayez la manip suivante

Ceci n’est vrai que dans le cas d’une constante de classe et non dans le cas d’une constante d’instance. C’est-à-dire que la même manip en omettant le mot clé static ne fournira pas le même résultat.

À lire aussi


  1. En me relisant, je me dis que demander ce que fait le compilateur, c’est un peu induire la réponse…