Um zwischen diesen beiden Brüdern zu unterscheiden, müssen wir zunächst wissen, was sie sind. Nehmen Sie zunächst die Mitgliedsvariable.
Mitgliedsvariablen
Lassen Sie uns etwas studieren:
Attribute: externe Eigenschaften; wie menschliche Größe und Gewicht
Verhalten: Was können Sie tun? Zum Beispiel haben Menschen Verhaltensweisen wie Sprechen, Basketball spielen usw.
In der Java -Sprache ist die grundlegendste Einheit eine Klasse, und Klassen werden verwendet, um Dinge widerzuspiegeln.
Gleiches gilt für die Beschreibung von Dingen mit Klassenklassen:
Attribut: Mitgliedsvariablen in der entsprechenden Klasse
Verhalten: Mitgliedsfunktionen in der entsprechenden Klasse
Das Definieren einer Klasse ist tatsächlich Mitglied (Mitgliedsvariablen und Mitgliederfunktionen) in der Klasse
Erweiterung: Eine Klasse ist ein abstraktes Konzept, und ein Objekt ist die konkrete Existenz und Verkörperung einer Klasse. Zum Beispiel: Das Auto im Leben kann als Klasse angesehen werden, die wir die Autokurs nennen. Jedes Auto verfügt über eine Farb- und Reifenzahl (kann als Attribut definiert werden, d. H. Die Mitgliedsvariable), und jedes Auto kann ausgeführt werden (dh das Verhalten des Autos, das der Gesamtmember -Funktion der Klasse entspricht). Wenn wir das Auto instanziieren, produzieren wir ein Objekt wie Mercedes-Benz und BMW (BMW).
Demo1:
public Class Car {private String Farbe; // die Autofarbe definieren, globale variable private int numluntai; // Definieren Sie die Auto -Reifennummer, globale variable öffentliches Auto (String Farbe, int numluntai) {Super (); this.color = color; this.numluntai = numluntai; } public void run () {System.out.println (this.numluntai + "Räder" + this.color + "Das Auto fährt auf der Straße"); }} public class classtest {public static void main (String [] args) {car bmw = new Car ("schwarz", 4); // Erstellen Sie ein Limousinenobjekt mit dem Namen BMW bmw.run (); }}Auslaufergebnisse:
Eine schwarze Limousine mit 4 Rädern fährt auf der Straße
Unter ihnen werden Farbe und Numluntai als Mitgliedsvariablen der Autoklasse bezeichnet. Diese Eigenschaft kann verwendet werden, um die Eigenschaften einer Klasse zu beschreiben. Andernfalls sollte es als lokale Variable definiert werden.
Zum Beispiel ist ich in a for Loop eine lokale Variable.
für (int i = 0; i <args.length; i ++) {
......
}
Beispielsweise wird eine Variable in eine Mitgliedsmethode als lokale Variable geschrieben.
publicCass car {private String Farbe; // die Autofarbe definieren, globale variable private int numluntai; // Definieren Sie die Auto -Reifennummer, globale variable öffentliches Auto (String Farbe, int numluntai) {Super (); this.color = color; this.numluntai = numluntai; } public void run () {String carname = "bmw"; // Dies ist das lokale variable System.out.println (this.numluntai + "Räder" + this.color + carname + "Das Auto fährt auf der Straße"); }} publicClass classtest {public static void main (String [] args) {car bmw = new Car ("schwarz", 4); // Erstellen Sie ein Limousinenobjekt mit dem Namen BMW bmw.run (); }}Ergebnis:
Black BMW Limousine mit 4 Rädern fährt auf der Straße
Der Unterschied zwischen Mitgliedsvariablen und lokalen Variablen
Mitgliedsvariablen:
① Mitgliedervariablen sind in der Klasse definiert und können in der gesamten Klasse zugegriffen werden.
② Mitgliedervariablen werden mit der Festlegung des Objekts erstellt, verschwinden mit dem Verschwinden des Objekts und existieren im Heap -Speicher, in dem sich das Objekt befindet.
③ Member -Variablen haben Standardinitialisierungswerte.
Lokale Variablen:
① Lokale Variablen sind nur im lokalen Bereich definiert, wie z.
② Lokale Variablen existieren im Stack -Speicher. Wenn der Umfang ihrer Funktion endet, wird der variable Speicherplatz automatisch freigegeben.
③ Lokale Variablen haben keine Standardinitialisierungswerte
Die Prinzipien, die bei der Verwendung von Variablen befolgt werden müssen, sind: Proximity -Prinzip
Suchen Sie zunächst im lokalen Bereich, verwenden Sie es, wenn es einen gibt. Suchen Sie dann in der Mitgliedsposition.
Ich kann ein wenig verwirrt sein, wenn ich das sehe. Lassen Sie mich unten ein Beispiel aussortieren. Wenn Sie sorgfältig darüber nachdenken, ist es tatsächlich sehr einfach.
Schauen wir uns zuerst einen einfachen Code an.
Zuerst habe ich eine Personklasse definiert.
public class Person {private int age = 1000; // Elementvariablen definieren, Alter ist 1000 öffentliche Hohlraum -Setage (int Alter) {Alter = Alter; System.out.println ("Alter innerhalb der Methode"+Alter); } public void sayshello () {System.out.println ("Mein Alter ist"+Alter+". }}Erstellen Sie dann ein Objekt in der Hauptfunktion und geben Sie es aus.
Person p = neue Person (); P.Setage (20); P.Sayhello ();
Was ist das Ausgangsergebnis? Es ist nicht so, dass wir uns vorgestellt haben, dass mein Alter 20 ist, sondern Folgendes:
// Das Alter innerhalb der Methode beträgt 20 // mein Alter ist 1000.
Es ist tatsächlich leicht zu verstehen, wenn Sie darüber nachdenken.
Wenn es unterschiedliche Namen gibt, repräsentiert der variable Name in der Methode eine Elementvariable. Wenn es die gleichen Namen gibt, stellt der variable Name in der Methode nur eine lokale Variable dar und hat keine Beziehung zur Mitgliedsvariablen.
Wenn wir also ein Personobjekt P erstellen, wurde die Mitgliedsvariable beim Erstellen des Objekts initialisiert. Der Anfangswert des variablen Altersalters beträgt 1000.
Wenn wir P.Setage (20) p. Nach der Ausführung dieses Satzes wird die 20 zerstört.
Führen Sie dann Sayhello aus, und das Alter darin repräsentiert den Wert der Mitgliedsvariable, so dass es immer noch 1000 ist.
Wenn Sie es hier immer noch nicht verstehen können, können Sie den Code selbst schreiben, um die Ausgabergebnisse zu sehen und ihn zu erleben.
Wenn der gleiche Name verwendet wird, möchten wir diesen Variablennamen eine Mitgliedsvariable darstellen lassen. Gibt es eine Möglichkeit?
Dann müssen wir über dieses Schlüsselwort sprechen. Wir haben die Personenklasse dazu geändert:
public class Person {privat int age = 1000; public void setage (int ay) {this.age = älter; System.out.println ("Alter innerhalb der Methode"+Alter); } public void sayshello () {System.out.println ("Mein Alter ist"+Alter+". }}Führen Sie den Code erneut aus und stellen Sie fest, dass das Ergebnis des Codelaufs Folgendes wird:
// Das Alter innerhalb der Methode beträgt 20 // mein Alter ist 20.
Dies repräsentiert das aktuelle Objekt.
Dies.age hier zeigt ausdrücklich an, dass der Wert des Alters des P -Objekts (dh das variable Altersalter des P -Objekts) 20 beträgt.
Obwohl die Essenz der beiden variabel ist, gibt es bei der Verwendung einen großen Unterschied, und Sie können in eine Falle fallen, wenn Sie nicht vorsichtig sind. Denken Sie zuerst daran: Wenn in einer Klasse eine Variable verwendet werden kann, um die Eigenschaften einer Klasse zu beschreiben, wird sie als Mitgliedsvariable definiert. Andernfalls sollte sie als lokale Variable definiert werden. Wenn Sie nicht verstehen können, schreiben Sie mehr Code und Sie können ihn verstehen.