Dies wird innerhalb einer Klasse verwendet, um die Klasseninstanz selbst darzustellen.
Dieses Schlüsselwort ist ein Verweis auf sich selbst innerhalb der Klasse, der Methoden in der Klasse den Zugriff auf ihre eigenen Eigenschaften erleichtern kann.
Verwendung davon in Java
1. Wenn lokale Variablen und Mitgliedsvariablen denselben Namen haben, verwenden Sie dies in der Methode . Mitgliedsvariablen zur Unterscheidung.
class Demo{ String str = "这是成员变量"; void fun(String str){ System.out.println(str); System.out.println(this.str); this.str = str; System.out.println(this.str); } } public class This{ public static void main(String args[]){ Demo demo = new Demo(); demo.fun("这是局部变量"); } }
Analyse: Die obige Klassendemo hat eine Mitgliedsvariable str und eine lokale Variable str (formeller Parameter in der Klassenmethode). Es ist offensichtlich, dass die lokale Variable und die Mitgliedsvariable denselben Namen haben Zu diesem Zeitpunkt wird bei der direkten Verwendung von str in der Methode tatsächlich die lokale Variable str verwendet, die keine Auswirkungen auf die Mitgliedsvariable str hat. Wenn Sie zu diesem Zeitpunkt etwas mit der Mitgliedsvariablen tun müssen, müssen Sie das Schlüsselwort this verwenden .
Es gibt eine Frage: Wenn die Methode keinen str enthält, was passiert, wenn die Mitgliedsvariable str in der Methode verwendet wird? Tatsächlich werden alle Operationen innerhalb der Methode an der Mitgliedsvariablen str ausgeführt. In der Mitte von Seite 84 von Java Programming Thoughts steht ein Satz: Wenn Sie eine andere Methode derselben Klasse innerhalb einer Methode aufrufen, müssen Sie diese nicht verwenden. Wenn in einer Methode keine lokalen Variablen und Mitgliedsvariablen mit demselben Namen vorhanden sind, müssen Sie dies auch nicht verwenden, wenn Sie Mitgliedsvariablen in dieser Methode verwenden. Sie können den folgenden Code ausführen, um dies anzuzeigen.
class Demo{ String str = "这是成员变量"; void fun(String str1){ System.out.println(str1); System.out.println(str); } } public class This{ public static void main(String args[]){ Demo demo = new Demo(); demo.fun("这是局部变量"); } }
2. Das Schlüsselwort this übergibt das aktuelle Objekt an andere Methoden
Hier ist ein sehr klassisches Beispiel, nämlich das Beispiel auf Seite 85 von Java Programming Thoughts. Nehmen wir es heraus und studieren es sorgfältig.
class Person{ public void eat(Apple apple){ Apple peeled = apple.getPeeled(); System.out.println("Yummy"); } } class Peeler{ static Apple peel(Apple apple){ //....remove peel return apple; } } class Apple{ Apple getPeeled(){ return Peeler.peel(this); } } public class This{ public static void main(String args[]){ new Person().eat(new Apple()); } }
Das ist mein eigenes Verständnis. Es ist möglicherweise nicht korrekt, was im Buch steht: Apple muss die Peeler.peel()-Methode aufrufen eine externe Utility-Methode, die einen Vorgang ausführt, der aus irgendeinem Grund außerhalb von Apple platziert werden muss (vielleicht weil diese externe Methode auf viele verschiedene Klassen angewendet wird und Sie den Code nicht duplizieren möchten). Um sich selbst an eine externe Methode zu übergeben, muss das Schlüsselwort this verwendet werden.
Analyse: Stellen Sie sich ein Szenario vor: Wenn die Arbeit beim Schälen aller Arten von Früchten gleich ist, werde ich sie auf die gleiche Weise schälen, solange Sie mir die Früchte geben. In Kombination mit dem obigen Beispiel wird dann eine Frucht übergeben. Bevor wir getPeeled () essen, müssen wir diese Frucht als Parameter an die externe Schale () übergeben und diese verwenden, um sie selbst darzustellen und an die externe Methode zu übergeben.
3. Wenn Sie einen Verweis auf das aktuelle Objekt zurückgeben müssen, schreiben Sie dies häufig in die Methode
Der Vorteil dieses Ansatzes ist: Wenn Sie Verwenden Sie ein Objekt zum Aufrufen. Diese Methode gibt das geänderte Objekt zurück und kann das Objekt zum Ausführen anderer Vorgänge verwenden. Daher ist es einfach, mehrere Operationen an einem Objekt durchzuführen.
public class This{ int i = 0; This increment(){ i += 2; return this; } void print(){ System.out.println("i = " + i); } public static void main(String args[]){ This x = new This(); x.increment().increment().print(); } }
Das Ergebnis ist:
4
4. Um den Konstruktor im Konstruktor aufzurufen, müssen Sie Folgendes verwenden:
Eine Klasse hat viele Konstruktoren , manchmal Wenn Sie andere Konstruktoren in einem Konstruktor aufrufen möchten, um Codeduplizierung zu vermeiden, können Sie das Schlüsselwort this verwenden. Im Java-Programmierdenken gibt es ein Sprichwort: Normalerweise bezieht es sich beim Schreiben auf „dieses Objekt“ oder „aktuelles Objekt“ und stellt selbst einen Verweis auf das aktuelle Objekt dar. Wenn im Konstruktor eine Parameterliste hinzugefügt wird, hat diese eine andere Bedeutung. Dies führt zu einem expliziten Aufruf eines Konstruktors, der dieser Parameterliste entspricht. Dadurch wird ein direkter Pfad zum Aufruf anderer Konstruktoren bereitgestellt.
Sorgfältige Analyse:
Ausgehend von der Hauptfunktion weist new Flower() Speicherplatz im Speicher zu und initialisiert das Objekt Rufen Sie den Konstruktor auf. Hier werden keine Parameter geschrieben. Natürlich wird der Standardkonstruktor aufgerufen, bei dem es sich um einen Konstruktor ohne Parameter handelt.
Die erste Codezeile dieses parameterlosen Konstruktors lautet this("hi",122); was dies hier bedeutet, ist, dass der parameterlose Konstruktor den Konstruktor mit zwei Parametern aufruft und zu einem Zwei-Parameter kommt Konstruktor, die erste Codezeile ist this(s); diese Codezeile entspricht automatisch dem Konstruktor mit einem Parameter, und es wird festgestellt, dass Flower(String ss) übereinstimmt, wobei es sich bei beiden um Parameter vom Typ String handelt.
Ruft dann den Konstruktor mit einem Parameter vom Typ String auf und gibt Folgendes aus: 只有String类型的参数的构造函数 s = hi
Kehrt dann zur vorherigen Ebene zurück, um die Funktion aufzurufen, bei der es sich um den Konstruktor mit zwei Parametern handelt Die vorherige Ebene, die der parameterlose Konstruktor ist, druckt: 有String和int类型的参数的构造函数
. 默认构造函数
in der letzten Codezeile der Hauptfunktion. petalCount=122 s=hi
2. Der von Ihnen aufgerufene Konstruktor muss am Anfang stehen. Dies erklärt auch, warum Sie nicht zwei Konstruktoren in einem Konstruktor aufrufen dürfen, dann darf der zweite nicht am Anfang stehen.
3. In diesem Beispiel können Sie im Konstruktor mit zwei Parametern jeden anderen Konstruktor mit nur einem Parameter aufrufen.
4. Sie können dies nicht verwenden, um den Konstruktor in einer anderen Methode als dem Konstruktor aufzurufen. Die Kommentare im Code können nicht korrekt kompiliert werden.
Diese Zusammenfassung
1 Stellt einen Verweis auf das aktuelle Objekt dar!
2. Zeigt die Verwendung von Klassenmitgliedsvariablen anstelle von Funktionsparametern an.
3 Wird verwendet, um auf den Konstruktor zu verweisen, der den angegebenen Parametertyp im Konstruktor erfüllt (eigentlich ist es auch der Konstruktor). Allerdings muss man hier sehr vorsichtig sein: Es kann nur ein Konstruktor referenziert werden und dieser muss am Anfang stehen!
4. Offensichtlich kann dies nicht in statischen Methoden verwendet werden, da sich dies auf das aktuelle Objekt bezieht und statische Methoden kein Objekt haben.
php Chinesische Website, eine große Anzahl kostenloser Java-Einführungs-Tutorials, willkommen zum Online-Lernen!
Das obige ist der detaillierte Inhalt vonWas bedeutet das in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!