Pour distinguer ces deux frères, tout d'abord, nous devons savoir ce qu'ils sont. Premièrement, prenez la variable du membre.
Variables des membres
Étudions une chose:
Attributs: caractéristiques externes; comme la taille et le poids humains
Comportement: que pouvez-vous faire; Par exemple, les gens ont des comportements tels que parler, jouer au basket, etc.
En langue java, l'unité la plus élémentaire est une classe et les classes sont utilisées pour refléter les choses.
Il en va de même pour décrire les choses avec des classes de classe:
Attribut: variables membre dans la classe correspondante
Comportement: fonctions des membres en classe correspondante
La définition d'une classe est en fait un membre (variables membre et fonctions membres) dans la classe
Expansion: une classe est un concept abstrait, et un objet est l'existence concrète et l'incarnation d'une classe. Par exemple: la voiture dans la vie peut être considérée comme une classe, que nous appelons la classe de voiture. Chaque voiture a un numéro de couleur et de pneu (peut être défini comme un attribut, c'est-à-dire la variable membre), et chaque voiture peut s'exécuter (c'est-à-dire le comportement de la voiture, correspondant à la fonction membre totale de la classe). Si nous instancions la voiture, nous produirons un objet, comme Mercedes-Benz et BMW (BMW).
Demo1:
Classe publique Car {Couleur de chaîne privée; // définir la couleur de la voiture, variable globale privée int numluntai; // Définir le numéro de pneu de voiture, la voiture publique variable globale (Couleur de chaîne, int numluntai) {super (); this.color = couleur; this.numluntai = numluntai; } public void run () {System.out.println (this.numluntai + "roues" + this.color + "La voiture conduit sur la route"); }} classe publique CLASSTEST {public static void main (String [] args) {car bmw = new Car ("Black", 4); // Créez un objet berline avec le nom bmw bmw.run (); }}Résultats en cours:
Une berline noire avec 4 roues conduit sur la route
Parmi eux, Color et Numluntai sont appelés variables membres de la classe automobile. Cette propriété peut être utilisée pour décrire les propriétés d'une classe. Sinon, il doit être défini comme une variable locale.
Par exemple, je dans une boucle pour une variable locale.
pour (int i = 0; i <args.length; i ++) {
......
}
Par exemple, une variable est écrite dans une méthode membre en tant que variable locale.
PublicClass Car {Couleur de chaîne privée; // définir la couleur de la voiture, variable globale privée int numluntai; // Définir le numéro de pneu de voiture, la voiture publique variable globale (Couleur de chaîne, int numluntai) {super (); this.color = couleur; this.numluntai = numluntai; } public void run () {string carname = "bmw"; // Ceci est la variable locale System.out.println (this.numluntai + "roues" + this.color + carname + "La voiture conduit sur la route"); }} publicClass CLASSTest {public static void main (String [] args) {car bmw = new Car ("Black", 4); // Créez un objet berline avec le nom bmw bmw.run (); }}résultat:
Black BMW Sedan avec 4 roues conduit sur la route
La différence entre les variables des membres et les variables locales
Variables des membres:
① Les variables membre sont définies dans la classe et sont accessibles dans toute la classe.
② Les variables membre sont établies avec l'établissement de l'objet, disparaissent avec la disparition de l'objet et existent dans la mémoire du tas où se trouve l'objet.
③ Les variables membre ont des valeurs d'initialisation par défaut.
Variables locales:
① Les variables locales ne sont définies que dans la portée locale, telles que: dans les fonctions, dans les déclarations, etc., et ne sont valables que dans la zone à laquelle elles appartiennent.
② Les variables locales existent dans la mémoire de la pile. Lorsque la portée de leur fonction se termine, l'espace variable sera automatiquement libéré.
③ Les variables locales n'ont pas de valeurs d'initialisation par défaut
Les principes qui doivent être suivis lors de l'utilisation des variables sont: Principe de proximité
Tout d'abord, recherchez dans la portée locale, utilisez-le s'il y en a un; Recherchez ensuite au poste de membre.
Je suis peut-être un peu confus quand je vois ça. Permettez-moi de trier un exemple ci-dessous. Si vous y réfléchissez avec soin, c'est en fait très simple.
Jetons un coup d'œil à un code simple en premier.
J'ai d'abord défini une classe de personne.
classe publique Personne {private int Age = 1000; // Définir les variables des membres, l'âge est de 1000 Setage de vide public (Int Age) {Age = Age; System.out.println ("âge dans la méthode" + âge); } public void sayshello () {System.out.println ("mon âge est" + âge + "."); }}Créez ensuite un objet dans la fonction principale et sortez-le.
Personne p = new personne (); p.Setage (20); p.sayhello ();
Quel est le résultat de sortie? Ce n'est pas que nous imaginions que mon âge avait 20 ans, mais les suivants:
// L'âge dans la méthode est de 20 // mon âge est de 1000.
Il est en fait facile de comprendre si vous y pensez.
En un mot, s'il y a différents noms, le nom de variable dans la méthode représente une variable de membre; S'il y a les mêmes noms, le nom de variable dans la méthode ne représente qu'une variable locale, et il n'a pas de relation avec la variable membre.
Ainsi, d'abord, lorsque nous créons un objet Person P, la variable membre a été initialisée lors de la création de l'objet. La valeur initiale de l'âge variable du membre est de 1000.
Lorsque nous P.Setage (20), le 20 ne fonctionne en fait que dans la méthode Setage, donc l'âge de 20 dans la méthode est sortie. Après avoir exécuté cette phrase, le 20 est détruit.
Ensuite, exécutez Sayhello, et l'âge il représente la valeur de la variable membre, il est donc encore 1000.
Si vous ne pouvez toujours pas le comprendre ici, vous pouvez écrire le code vous-même pour voir les résultats de sortie et en faire l'expérience.
Ainsi, lorsque le même nom est utilisé, nous voulons laisser ce nom de variable représenter une variable de membre. Y a-t-il un moyen?
Ensuite, nous devons parler de ce mot-clé. Nous avons changé la classe de personne à ceci:
classe publique Personne {private int Age = 1000; public void Setage (int Age) {this.age = Âge; System.out.println ("âge dans la méthode" + âge); } public void sayshello () {System.out.println ("mon âge est" + âge + "."); }}Exécutez à nouveau le code et constatez que le résultat du code devient le résultat suivant:
// L'âge dans la méthode est de 20 // mon âge est de 20 ans.
Cela représente l'objet actuel.
Cet.age ici indique spécifiquement que la valeur de l'âge de l'objet P (c'est-à-dire l'âge variable membre de l'objet P) est de 20.
Bien que l'essence des deux soit variable, il y a toute une différence lorsqu'elle est utilisée, et vous pouvez tomber dans un piège si vous ne faites pas attention. N'oubliez pas d'abord: dans une classe, si une variable peut être utilisée pour décrire les propriétés d'une classe, elle est définie comme une variable de membre, sinon elle doit être définie comme une variable locale. Si vous ne pouvez pas comprendre, écrivez plus de code et vous pouvez le comprendre.