MethodeVSClasse - 420111aut25/cours420111 GitHub Wiki
En Java, il existe trois grands types de variables qu’on peut rencontrer dans une classe :
- Les variables d’instance
- Les variables de classe
- Les variables locales (dans les méthodes)
Voir la théorie quand même
Une variable d’instance est propre à chaque objet créé à partir d’une classe. Elle est déclarée dans la classe, mais en dehors des méthodes.
public class Voiture {
int vitesse; // Variable d’instance
}
- Chaque objet a sa propre copie.
- Sert à stocker des caractéristiques propres à un objet.
- Accessible dans la classe avec
this.vitesse
.
Une variable de classe est partagée par tous les objets d’une classe.
Elle est déclarée avec le mot-clé static
.
public class Voiture {
static int nombreDeVoitures = 0; // Variable de classe
}
- Une seule copie partagée entre tous les objets.
- Sert à des valeurs communes à toute la classe.
- Accessible avec
NomDeLaClasse.nomDeLaVariable
.
Une variable locale est déclarée à l’intérieur d’une méthode. Elle n’existe que pendant l’exécution de cette méthode.
public class Exemple {
public static void main(String[] args) {
int x = 5; // Variable locale
System.out.println(x);
}
}
- Elle n’est accessible que dans la méthode où elle est déclarée.
- Elle n’est pas connue du reste de la classe.
- Elle est créée quand la méthode s’exécute, puis supprimée à la fin.
Type de variable | Où ? | Mots-clés | Accessible par | Durée de vie |
---|---|---|---|---|
Instance | Dans la classe | (aucun) | l’objet | Tant que l’objet existe |
Classe | Dans la classe | static |
la classe | Tant que le programme tourne |
Locale (méthode) | Dans une méthode | (aucun) | la méthode | Pendant l’exécution de la méthode |
🔧 Consigne :
-
Crée une classe
Compteur
. -
Ajoute une variable de classe
total
de typeint
. -
Dans
main
:- Déclare une variable locale
total
et donne-lui la valeur5
, - Affiche cette variable locale,
- Puis affiche la variable de classe en utilisant
Compteur.total
.
- Déclare une variable locale
📝 Exemple attendu à l'écran :
5
0
Réponse
public class Compteur {
static int total = 0; // variable de classe
public static void main(String[] args) {
int total = 5; // variable locale
System.out.println(total); // locale
System.out.println(Compteur.total); // de classe
}
}
🔧 Consigne :
-
Crée une classe
Compteur
. -
Ajoute une variable de classe
nombreAppels
de typeint
. -
Écris une méthode
compter()
qui :- déclare une variable locale
appel
de typeint
et l’initialise à0
, - incrémente
appel
etnombreAppels
, - affiche les deux variables.
- déclare une variable locale
-
Appelle
compter()
deux fois depuismain
.
📝 Exemple attendu à l'écran :
appel = 1
nombreAppels = 1
appel = 1
nombreAppels = 2
Réponse
public class Compteur {
static int nombreAppels = 0; // variable de classe
public static void compter() {
int appel = 0; // variable locale : recréée à chaque appel
appel++;
nombreAppels++;
System.out.println("appel = " + appel);
System.out.println("nombreAppels = " + nombreAppels);
}
public static void main(String[] args) {
compter();
compter();
}
}
🔧 Consigne :
- Crée une classe
Score
. - Déclare une variable de classe
points
de typeint
, initialisée à10
. - Dans
main
, déclare une variable locale qui porte le même nom :points
, et initialise-la à50
. - Affiche d’abord la variable locale, puis la variable de classe.
📝 Exemple attendu à l'écran :
50
10
Réponse
public class Score {
static int points = 10; // variable de classe
public static void main(String[] args) {
int points = 50; // variable locale qui masque celle de classe
System.out.println(points); // affiche 50 (locale)
System.out.println(Score.points); // affiche 10 (de classe)
}
}
🧠 À retenir : Quand une variable locale a le même nom qu'une variable de classe, elle la masque dans le bloc où elle est déclarée. Pour accéder à la variable de classe malgré tout, on doit utiliser le nom de la classe (Score.points
ici).
Crée une méthode static
qui prend un tableau d’entiers en paramètre et l’affiche ligne par ligne.
public class Exo1 {
public static void main(String[] args) {
int[] valeurs = {43, 256, 3, 796, 35, 67};
afficherTableau(valeurs);
}
}
- Comprendre comment appeler une méthode
static
sans créer d’objet. - Utiliser une boucle
for
.
43
256
3
796
35
67
Crée une classe avec :
- Une variable de classe
static int total
initialisée à 0, - Une variable de classe
static int compte
initialisée à 0, - Une méthode
static
ajouterNote(int note)
qui ajoute la note àtotal
, incrémentecompte
, - Une méthode
static
afficherMoyenne()
qui calcule la moyenne (total / compte) et l’affiche avec deux décimales.
public class Exercice1 {
// Déclare total et compte ici
public static void ajouterNote(int note) {
// Ajoute note à total, incrémente compte
}
public static void afficherMoyenne() {
// Calcule et affiche la moyenne avec deux décimales
}
public static void main(String[] args) {
ajouterNote(12);
ajouterNote(15);
ajouterNote(18);
afficherMoyenne(); // Affiche : Moyenne : 15.00
}
}
Complète la méthode static
calculerPuissance(int base, int exposant)
qui calcule la puissance en utilisant une variable locale resultat
initialisée à 1, et une boucle for
.
public class Exercice2 {
public static void calculerPuissance(int base, int exposant) {
// Déclare resultat = 1
// Utilise une boucle for pour multiplier resultat par base exposant fois
// Affiche le résultat
}
public static void main(String[] args) {
calculerPuissance(2, 3); // Affiche : 8
calculerPuissance(5, 4); // Affiche : 625
}
}
Dans cette classe, crée une variable static
qui compte le nombre de fois où la méthode direBonjour
est appelée.
- La méthode
direBonjour
affiche"Bonjour !"
puis affiche le nombre d’appels effectués.
public class Exercice3 {
// Déclare la variable compteur ici
public static void direBonjour() {
// Incrémente compteur, affiche "Bonjour !" et le nombre d'appels
}
public static void main(String[] args) {
direBonjour(); // Affiche Bonjour ! Nombre d’appels : 1
direBonjour(); // Affiche Bonjour ! Nombre d’appels : 2
direBonjour(); // Affiche Bonjour ! Nombre d’appels : 3
}
}