1. Classification des variables en Java
Les variables en Java peuvent être divisées en variables locales et en variables membres selon différentes positions de déclaration . Si une variable membre est modifiée avec le mot-clé static, elle est également appelée variable membre statique , et s'il n'y a pas de modification statique, elle est également appelée une variable membre d'instance . Ce qui suit décrit les connexions et les différences entre les trois.
public class Variable {
//静态成员变量(静态变量)
static int x=10;
//实例成员变量(成员变量)
int y=20;
public static void main(String[] args) {
//局部变量
int num=30;
}
}
2. La différence entre les variables locales, les variables membres et les variables statiques
variable | Déclarer l'emplacement | Emplacement mémoire | Cycle de la vie | initialisation |
---|---|---|---|---|
Variable locale | Dans la méthode ou sur la déclaration de méthode (paramètres) | Empiler | Créé lors de l'appel de la méthode, disparaît lorsque la méthode disparaît | L'initialisation doit être attribuée |
Variable d'instance | Méthode extérieure en classe | tas | Créé au fur et à mesure que les objets sont créés, disparaissent lorsque les objets disparaissent | A une valeur d'initialisation par défaut |
Variable statique | Méthode extérieure en classe | Zone statique | Charger lorsque la classe est chargée, et disparaître lorsque la classe disparaît | A l'initialisation par défaut |
Quand utiliser des variables statiques?
Lorsqu'une certaine "valeur d'attribut" de tous les objets d'une classe ne change pas avec le changement de l'objet, afin d'économiser la mémoire du tas, nous pouvons définir l'attribut comme un attribut de niveau classe, c'est-à-dire le déclarer comme statique variable, et passer aux données "Famille entière", ces variables sont accessibles directement en utilisant "nom de classe" sans créer d'objets.
Variables de membre | Différence de surface | scènes à utiliser | Méthode d'appel | Emplacement mémoire |
---|---|---|---|---|
Variable d'instance | Aucune modification statique | Pour chaque objet de la classe estAttributs uniques | Ne peut être appelé que par le nom de l'objet | Zone de tas |
Variable statique | Modifié par statique | Pour chaque objet de la classeAttributs cohérents | Vous pouvez utiliser le nom de la classe pour appeler, vous pouvez également utiliser le nom de l'objet à appeler (non recommandé) | Zone statique |
Par exemple:
public class ManTest {
public static void main(String[] args) {
Man man=new Man("小明");
//实例变量使用对象名调用
System.out.println("名字"+man.name);
//静态变量可使用类名调用(推荐)
System.out.println("性别"+Man.sex);
//静态变量也可以通过对象名调用(不推荐)
System.out.println("性别"+man.sex);
}
}
class Man{
//实例变量
String name;
//静态变量
static char sex='男';
Man(){
}
Man(String name) {
this.name = name;
}
}
Quelques notes
- Le principe de proximité
lorsque les membres des mêmes variables locales et noms de variables, utilisent dans la méthode, en utilisant le principe de proximité. - Portée
Les noms de variables d'un même domaine ne peuvent pas avoir le même nom. Différents noms de variables de domaine peuvent être identiques. Java suit le principe de proximité et accédera automatiquement aux données les plus proches.
En ce qui concerne la plage de variables valide, rappelons-nous une phrase: vous ne la reconnaîtrez pas après les accolades .