Cet article analyse la différence entre les variables membres et les variables locales en Java avec des exemples. Partagez-le avec tout le monde pour votre référence. L’analyse spécifique est la suivante :
Variables membres : les variables privées définies dans cette classe appartiennent à cette classe.
Créez et utilisez des variables membres pour copier le code. Le code est le suivant : public class Person {.
Nom de la chaîne ;
Sexe à cordes ;
âge entier ;
double hauteur ;
public static void main (String arges[])
{
Personne p=nouvelle Personne();
p.name="Xiao Huang";
p.Sex="Homme";
p.age=20 ;
p.Hauteur=1,7 ;
System.out.println("Nom:"+p.name+",Gender"+p.Sex+",Âge:"+p.age+",Âge:"+p.Hauteur);
}
}
Processus d'initialisation des variables membres
1. Initialisation de la classe
Pour l'initialisation de classe : l'initialisation de classe n'est généralement initialisée qu'une seule fois, et l'initialisation de classe initialise principalement les variables membres statiques.
La compilation d'une classe détermine le processus d'initialisation de la classe.
Le fichier de classe généré par le compilateur apporte principalement les modifications suivantes aux classes définies dans le fichier source :
1) Déclarez d’abord les variables membres à l’intérieur de la classe dans l’ordre dans lequel les variables membres statiques sont définies.
2) Initialisez selon la séquence d'initialisation des variables membres dans la classe Java d'origine.
La conversion correspondante entre une classe Java et la classe compilée est la suivante :
Fichier source :
Copiez le code comme suit : public class Person{
public static String name="Zhang San";
âge public statique int ;
statique{
âge=20 ;
System.out.println("Âge d'initialisation");
}
adresse de chaîne statique publique ;
statique{
adresse="Pékin";
âge=34 ;
}
public static void main (String[] arguments) {
System.out.println(nom);
System.out.println(âge);
System.out.println(adresse);
}
}
Lorsque le code source Java est converti en fichier de classe, il est converti en code similaire au suivant :
Copiez le code comme suit : public class Person{
nom de chaîne statique public ;
âge public statique int ;
adresse de chaîne statique publique ;
statique{
nom="Zhang San";
âge=20 ;
System.out.println("Âge d'initialisation");
adresse="Pékin";
âge=34 ;
}
public static void main (String[] arguments) {
System.out.println(nom);
System.out.println(âge);
System.out.println(adresse);
}
}
La séquence d'initialisation est exécutée séquentiellement en fonction de la séquence d'initialisation des variables membres de la classe correspondantes après la conversion, de sorte que toutes les variables membres statiques sont déclarées en premier puis affectées, et l'ordre d'affectation est également basé sur l'ordre dans lequel les variables membres statiques sont initialisé dans le code source. Remarque : Définir une variable membre et l'initialiser directement équivaut à l'initialiser dans un bloc de code statique, dans l'ordre dans lequel elles sont définies dans le code source.
variables locales
Variable locale : Créée dans le corps de la méthode, cette variable n'est pas accessible en dehors du corps de la méthode.
Création et utilisation de variables locales (les variables locales doivent recevoir une valeur, les variables membres ne peuvent pas recevoir de valeur)
Copiez le code comme suit : public class Person {
public static void main (String arges[])
{
Nom de la chaîne = "Xiao Huang" ;
Chaîne Sex="Mâle" ;
âge entier = 20 ;
double hauteur = 1,70 ;
System.out.println("Nom:"+nom+",gender"+Sex+",age:"+age+",age:"+Height);
}
}
Voir l'exemple et copier le code. Le code est le suivant : public class PassTest {.
public static void main(String args[]) {
StringBuffer a = new StringBuffer("a");
StringBuffer b = nouveau StringBuffer("b");
une(une,b);
System.out.println(a);
System.out.println(b);
PassTest p = nouveau PassTest();
ordinateur();
}
static void a(StringBuffer a, StringBuffer b) {
a = a.append(b);
b = une;
}
}
Selon le champ d'utilisation des variables locales, le résultat devrait être ab, mais en fait le résultat est bien ab b. Pourquoi ?
Il s'agit de passer des références de paramètres. S'il s'agit d'une référence, ce qui est passé doit être une copie de la même référence.
b=a dans la méthode a modifie la référence de copie b en =a, mais n'a aucun effet sur b dans main.
a = a.append(b); Principalement a.append(b); Cette phrase change la valeur pointée par une référence, car a dans main pointe également vers le même objet, donc la sortie est ab b
Si a = a.append(b); est remplacé par a = new StringBuffer("ab");
Regardez les deux programmes suivants :
Première procédure :
Copiez le code comme suit : variable de classe publique
{
int je;
test nul()
{
entier j=8 ;
si(j==i)
System.out.println("Égal");
autre
System.out.println("Pas égal");
}
public static void main (String[] arguments)
{
Variable v=nouvelle variable();
v.test();
}
}
Deuxième procédure :
Copiez le code comme suit : variable de classe publique
{
test nul()
{
int je;
entier j=8 ;
si(j==i)
System.out.println("Égal");
autre
System.out.println("Pas égal");
}
public static void main (String[] arguments)
{
Variable v=nouvelle variable();
v.test();
}
}
Le premier programme est normal et se compile sans erreur. Lorsque le deuxième programme est compilé, l’erreur suivante s’affichera :
D:Programmejavatest>Variable javac.java
Variable.java : 9 : La variable i n'a peut-être pas encore été initialisée
si(j==i)
^
erreur
La raison pour laquelle une telle erreur se produit est la suivante : les variables membres ont des valeurs par défaut (celles modifiées par final et non statiques doivent être attribuées explicitement), et les variables locales ne seront pas attribuées automatiquement.
Le corps de la classe est divisé en deux parties. Les variables définies dans la partie définition des variables sont appelées variables membres de la classe, et les variables définies dans le corps de la méthode et les paramètres de la méthode sont appelées variables locales.
La différence entre les variables locales et les variables membres
Les variables locales décrivent les attributs du corps de la méthode, tandis que les variables membres décrivent les attributs de l'objet.
Les variables membres peuvent être modifiées par les modificateurs public, protected, default, private, static et final, tandis que les variables locales ne peuvent être modifiées que par le modificateur final.
Les variables membres sont créées sur le tas et les variables locales sont créées sur la pile.
Les variables locales ont des valeurs par défaut du système. Les variables locales n'ont pas de valeurs par défaut du système et doivent être attribuées manuellement.
J'espère que cet article sera utile à la programmation Java de chacun.