Saisir la portée d'une variable
Portée des variables en Java
La portée d’une variable détermine où dans votre code vous pouvez accéder à cette variable. En Java, il existe quatre types de portée :
- Variables d’instance : Ces variables sont déclarées à l’intérieur d’une classe mais en dehors d’une méthode. Elles sont accessibles à toutes les méthodes de la classe.
public class MaClasse {
// Variable d'instance
int maVariable;
}
- Variables de classe : Aussi appelées variables statiques, elles sont déclarées comme
staticà l’intérieur d’une classe mais en dehors d’une méthode. Elles sont accessibles à toutes les méthodes de la classe, même sans créer une instance de la classe.
public class MaClasse {
// Variable de classe
static int maVariable = 5;
}
- Variables locales : Ces variables sont déclarées à l’intérieur d’une méthode ou d’un bloc de code. Elles ne sont accessibles qu’à l’intérieur de ce bloc.
public void maMethode() {
// Variable locale
int maVariable;
}
- Paramètres de méthode : Ces variables sont les paramètres passés à une méthode. Elles sont accessibles à l’intérieur de cette méthode.
public void maMethode(int maVariable) {
// maVariable est un paramètre de méthode
}
Accès aux variables
public class Main {
public static void main(String[] args) {
// Accès à la variable de classe
System.out.println("Variable de classe : " + MaClasse.maVariableStatique);
// Création d'une instance de MaClasse
MaClasse obj = new MaClasse();
// Appel de la méthode maMethode
obj.maMethode(40);
System.out.println(MaClasse.maVariableStatique);
MaClasse.maVariableStatique = 15;
System.out.println(MaClasse.maVariableStatique);
// J'accède directement à la variable de classe aussi appelé variable static (VarStatic)
// sans avoir besoin de créer une instance
MaClass2.VarStatic = "toto";
// J'accède à la variable de class (VarInstance) en créent une instance (nouveau objet)
// de la class
MaClass2 NouveauObjet = new MaClass2();
MaClass2 NouveauObjet2 = new MaClass2();
NouveauObjet2.VarInstance = "JoJo";
NouveauObjet.VarInstance = "Tintin";
// J'accède à ma méthode static de MaClass2
MaClass2.MethodeStatic();
System.out.println(MaClass2.MethodeStatic());
}
}
public class MaClasse {
// Variable de classe (statique)
static int maVariableStatique = 10;
// Variable d'instance
int maVariableInstance = 20;
public void maMethode(int parametre) {
// parametre est un paramètre de méthode
System.out.println("Paramètre de méthode : " + parametre);
// maVariableLocale est une variable locale à cette méthode
int maVariableLocale = 30;
System.out.println("Variable locale : " + maVariableLocale);
// Accès à la variable d'instance
System.out.println("Variable d'instance : " + this.maVariableInstance);
MaClass2.MethodeStatic();
}
}
import java.util.List;
public class MaClass2 {
// Variable d'instance
public String VarInstance;
// Variable static
public static String VarStatic;
// Une variable static
private static double version = 1.1;
// Methode static qui retourn la valeur de la variable version : 1.1
// Une méthode static doit utiliser ou retourner une variable static
public static double MethodeStatic() {
return version;
}
}
Dans cet exemple, maVariableStatique est une variable de classe accessible à toutes les méthodes de la classe, même sans créer une instance de la classe. maVariableInstance est une variable d’instance, ce qui signifie qu’elle appartient à une instance particulière de la classe MaClasse. maVariableLocale est une variable locale qui n’est accessible qu’à l’intérieur de la méthode maMethode(). Enfin, parametre est un paramètre de méthode qui est passé à la méthode maMethode() et est accessible à l’intérieur de cette méthode.
Portée des variables
public class ExemplePortee {
// Portée de classe
private static int variableClasse = 1;
public static void main(String[] args) {
// Portée de méthode
int variableMethode = 2;
System.out.println("Variable de classe : " + variableClasse);
System.out.println("Variable de méthode : " + variableMethode);
// Portée de boucle
for (int i = 0; i < 2; i++) {
System.out.println("Variable de boucle : " + i);
}
// Portée de bloc
{
int variableBloc = 4;
System.out.println("Variable de bloc : " + variableBloc);
}
}
}
Dans cet exemple, variableClasse a une portée de classe et peut être utilisée partout dans la classe. variableMethode a une portée de méthode et n’est valide que dans la méthode main. La variable i a une portée de boucle et n’est valide que dans la boucle for. Enfin, variableBloc a une portée de bloc et n’est valide que dans le bloc délimité par les accolades.
Variable Statique
En Java, une variable de classe, également appelée variable statique, peut être accédée directement à l’aide du nom de la classe, sans avoir besoin de créer une instance de la classe. Voici comment vous pouvez le faire :
public class MaClasse {
// Variable de classe (statique)
static int maVariableStatique = 10;
}
public class Main {
public static void main(String[] args) {
// Accès à la variable de classe
System.out.println("Variable de classe : " + MaClasse.maVariableStatique);
}
}
Variable Statique et Final
maVariableStatique est une variable de classe dans MaClasse. Vous pouvez y accéder en utilisant MaClasse.maVariableStatique.Il est important de noter que puisque les variables de classe sont partagées entre toutes les instances d’une classe, toute modification apportée à une variable de classe affectera toutes les autres instances de la classe. Par conséquent, elles doivent être utilisées avec prudence
En Java, les variables static et final sont des modificateurs de variables qui ont des significations différentes. Le mot-clé static indique qu’une variable appartient à la classe et non à une instance de la classe. Cela signifie que toutes les instances d’une classe partagent la même variable static et que toute modification apportée à cette variable par l’une des instances affectera toutes les autres instances.
D’autre part, le mot-clé final indique qu’une variable est constante et ne peut pas être modifiée une fois initialisée. Cela signifie que si vous déclarez une variable comme final, sa valeur ne peut plus être modifiée ultérieurement dans le programme.
Il est important de noter que les modificateurs static et final peuvent être utilisés ensemble pour créer des constantes de classe. Par exemple, vous pouvez déclarer une constante de classe en utilisant les mots-clés static et final comme suit:
public class MaClasse {
public static final int MA_CONSTANTE = 10;
}
Dans cet exemple, nous avons déclaré une constante de classe appeléeMA_CONSTANTEet lui avons attribué la valeur10. Cette valeur ne peut plus être modifiée ultérieurement dans le programme et est partagée par toutes les instances de la classeMaClasse