1. Constantes
De nombreux autres langages de programmation ont des constantes , c'est-à-dire des variables dont les valeurs ne peuvent pas être modifiées . Habituellement, ils sont utilisés pour une sorte de chose fondamentale comme le nombre Piou le nombre de jours dans les mois de l'année. Cela dit, en principe, un programmeur peut faire de n'importe quelle variable une constante, s'il ou elle décide que cela est nécessaire.
Alors, comment déclarer une variable immuable (constante) en Java ? Il existe un mot-clé spécial pour cela : final. La création d'une variable immuable ressemble à la création d'une variable ordinaire. La seule différence est qu'avant le type de la variable, vous devez écrire le mot final, comme ceci :
final Type name = value;
Si vous essayez d'attribuer une valeur différente à une finalvariable, votre programme ne sera tout simplement pas compilé.
Une finalvariable doit être initialisée (une valeur doit lui être affectée) lors de sa déclaration. Il existe une exception à cette règle : vous pouvez déplacer l'initialisation d'une variable de classe statique dans un constructeur. Mais vous apprendrez cela au niveau 10 .
Pour réduire le nombre de mots-clés, les développeurs Java utilisent le mot finalpour plus que simplement déclarer des constantes. finalpeut également s'appliquer aux méthodes et même aux classes. Les méthodes déclarées comme finalne peuvent pas être remplacées et une classe déclarée comme finalne peut pas être héritée.
Le finalmodificateur peut être ajouté avant toutes les variables : variables locales, paramètres de méthode, champs de classe et variables de classe statiques.
Notez qu'avant finalun nom de variable est juste une protection contre toute modification de cette variable . Si une variable stocke une référence à un objet, l'objet peut toujours être modifié.
Exemple:
|
Nous créons un tableau. Ceci n'est pas autorisé : la datavariable est déclarée comme final. Mais vous pouvez le faire. Et aussi ceci. |
Constantes globales
Si vous décidez de déclarer des constantes globales dans votre programme, vous devez alors créer des variables de classe statiques et les transformer publicen et final. Il existe un style spécial pour les noms de ces variables : ils sont écrits en lettres majuscules, avec un caractère de soulignement utilisé pour séparer les mots.
Exemples:
class Solution
{
public static final String SOURCE_ROOT = "c:\\projects\\my\\";
public static final int DISPLAY_WIDTH = 1024;
public static final int DISPLAY_HEIGHT = 768;
}
2. Ombrage variable
Comme nous l'avons dit précédemment, vous ne pouvez pas créer plusieurs variables locales avec le même nom dans la même méthode. Dans différentes méthodes, vous pouvez.
Mais voici ce que vous ne savez probablement pas : les variables d'instance et les variables de méthode locales peuvent avoir le même nom.
Exemple:
| Code | Visibilité variable |
|---|---|
|
|
Dans la addméthode, nous avons déclaré une variable locale nommée sum. Jusqu'à la fin de la méthode, il occulte (ou masque ) la sumvariable d'instance.
D'accord, dites-vous, c'est à prévoir dans un certain sens. Mais ce n'est pas la fin de l'histoire. Il s'avère que si une variable d'instance est masquée par une variable locale, il existe toujours un moyen de faire référence à la variable d'instance dans la méthode. Nous faisons cela en écrivant le thismot-clé avant son nom :
this.name
Voici un exemple où le conflit de nom est résolu avec succès :
| Code | Visibilité variable |
|---|---|
|
|
Les variables count et sum sont disponibles partout avec ou sans le thismot clé. Sur les lignes où la sum variable locale masque la sumvariable d'instance, la sum variable d'instance n'est accessible qu'à l'aide du thismot-clé.
Si une variable de classe statique plutôt qu'une variable d'instance est masquée, vous devez y accéder via le nom de la classe plutôt que le thismot-clé :
ClassName.name
Exemple:
| Code | Visibilité variable |
|---|---|
|
|
Vous pouvez accéder aux variables statiques count et sum partout avec ou sans utiliser le nom de la classe Solutioncomme préfixe. Dans les lignes où la sumvariable locale masque la sumvariable d'instance, l'accès à la sum variable d'instance n'est possible que lorsqu'elle est utilisée Solutioncomme préfixe.
3. Variables à l'intérieur d'une forboucle
Et un autre fait petit mais intéressant.
Il y a aussi un endroit où une variable est déclarée d'une manière spéciale — à l'intérieur d'une forboucle .
Vous vous souviendrez peut-être qu'une forboucle a généralement une variable de compteur entre parenthèses. Et quelle sera la visibilité de cette variable ? Après tout, ce n'est pas dans le corps de la boucle. Est-ce toute la méthode ? Ou non?
La bonne réponse est : une variable déclarée dans l'en-tête d'une forboucle n'est visible que dans le corps de la boucle et dans l' en-tête de la forboucle .
Exemple:
| Code | Visibilité variable |
|---|---|
|
|
Ainsi, vous pouvez toujours écrire des boucles les unes après les autres dans votre code et utiliser des variables de compteur portant le même nom - cela ne créera aucun problème.
Exemple:
| Code | Visibilité variable |
|---|---|
|
|
GO TO FULL VERSION