web-dev-qa-db-fra.com

Quelle est la différence entre les variables constantes et les variables finales en Java?

Veuillez m'aider à comprendre la différence entre les variables constantes et les variables final en Java. Je suis un peu confus avec ça.

13
Swaram Jagtap

Constante est le concept, la propriété de la variable.

final est le mot-clé Java pour déclarer une variable constante.


Comme d'autres l'ont souligné, d'un point de vue sémantique/linguistique, l'expression variable constante est un oxymore et, à ce titre, nous pourrions discuter de son exactitude.

Citant le spécification , de toute façon, nous pouvons lire

Une variable de type primitif, [...] finale et initialisée avec une expression constante au moment de la compilation (§15.28), est appelée variable constante .

Je suppose, par conséquent, que nous pouvons accepter (et considérer comme correct) ce binôme pour notre objectif.

26
Luigi Cortese

Constant n'est pas un mot clé en Java.

C'est un concept pour rendre toute variable constante. Pour cela, nous utilisons le mot clé final dans Java afin qu'après avoir initialisé la variable avec le mot clé final, personne ne puisse réaffecter la valeur de cette variable.

9
Amit Das

Il existe plusieurs valeurs dans le monde réel qui ne changeront jamais. Un carré aura toujours quatre côtés, PI à trois décimales sera toujours 3,142 et un jour aura toujours 24 heures. Ces valeurs restent constantes. Lors de l'écriture d'un programme, il est logique de les représenter de la même manière - comme des valeurs qui ne seront pas modifiées une fois qu'elles auront été affectées à une variable. Ces variables sont appelées constantes.

Déclarer une variable comme constante

En déclarant des variables, j'ai montré qu'il est facile d'attribuer une valeur à une variable int:

int hoursInADay = 24;

Nous savons que cette valeur ne changera jamais dans le monde réel, nous nous assurons donc qu'elle ne figure pas dans le programme. Pour cela, ajoutez le modificateur de mot clé final:

final int HOURS_IN_A_DAY = 24;

En plus du mot clé final, vous devriez avoir remarqué que la casse du nom de variable a changé pour être en majuscules conformément à la convention de dénomination standard Java Java. Cela rend beaucoup plus facile repérez les variables qui sont des constantes dans votre code.

Si nous essayons maintenant de changer la valeur de HOURS_IN_A_DAY:

final int HOURS_IN_A_DAY = 24; 
HOURS_IN_A_DAY = 36;

nous obtiendrons l'erreur suivante du compilateur:

impossible d'attribuer une valeur à la variable finale HOURS_IN_A_DAY

Il en va de même pour toutes les autres variables de type de données primitives. Pour les transformer en constantes, ajoutez simplement le mot clé final à leur déclaration.

Où déclarer des constantes

Comme pour les variables normales, vous souhaitez limiter la portée des constantes à l'endroit où elles sont utilisées. Si la valeur de la constante n'est nécessaire que dans une méthode, déclarez-la ici:

public class Hours {
   public static final int HOURS_IN_A_DAY = 24;
}
5
Saket Mittal