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 Pi
ou 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 final
variable, votre programme ne sera tout simplement pas compilé.
Une final
variable 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 final
pour plus que simplement déclarer des constantes. final
peut également s'appliquer aux méthodes et même aux classes. Les méthodes déclarées comme final
ne peuvent pas être remplacées et une classe déclarée comme final
ne peut pas être héritée.
Le final
modificateur 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 final
un 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 data variable 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 public
en 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 add
méthode, nous avons déclaré une variable locale nommée sum
. Jusqu'à la fin de la méthode, il occulte (ou masque ) la sum
variable 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 this
mot-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 this
mot clé. Sur les lignes où la sum
variable locale masque la sum
variable d'instance, la sum
variable d'instance n'est accessible qu'à l'aide du this
mot-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 this
mot-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 Solution
comme préfixe. Dans les lignes où la sum
variable locale masque la sum
variable d'instance, l'accès à la sum
variable d'instance n'est possible que lorsqu'elle est utilisée Solution
comme préfixe.
3. Variables à l'intérieur d'une for
boucle
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 for
boucle .
Vous vous souviendrez peut-être qu'une for
boucle 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 for
boucle n'est visible que dans le corps de la boucle et dans l' en-tête de la for
boucle .
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