Verwendung dieses Schlüsselworts in Java: 1. Wenn Mitgliedsvariablen und lokale Variablen denselben Namen haben, bedeutet dies bei Verwendung in einer Methode die Mitgliedsvariable in der Klasse, in der sich die Methode befindet. 2. Im Konstruktor durch this Sie können andere Konstruktoren in derselben Klasse aufrufen. 3. Verwenden Sie dies, um mehrere Parameter gleichzeitig zu übergeben.
Verwandte Empfehlungen: „Java Video Tutorial“
1. Wenn Mitgliedsvariablen und lokale Variablen denselben Namen haben und dieser in einer Methode verwendet wird, stellt er die Mitgliedsvariable in der Klasse dar, in der die Methode befindet. (Dies ist das aktuelle Objekt selbst)
public class Hello { String s = "Hello"; public Hello(String s) { System.out.println("s = " + s); System.out.println("1 -> this.s = " + this.s); this.s = s;//把参数值赋给成员变量,成员变量的值改变 System.out.println("2 -> this.s = " + this.s); } public static void main(String[] args) { Hello x = new Hello("HelloWorld!"); System.out.println("s=" + x.s);//验证成员变量值的改变 } }
Das Ergebnis ist:
s = HelloWorld! 1 -> this.s = Hello 2 -> this.s = HelloWorld! s=HelloWorld!
In diesem Beispiel hat der Parameter s im Konstruktor Hello den gleichen Namen wie die Mitgliedsvariablen s der Klasse Hello. Zu diesem Zeitpunkt, wenn Wenn Sie s direkt bearbeiten, ist dies der zu bedienende Parameter. Wenn Sie die Mitgliedsvariablen s der Klasse Hello bearbeiten möchten, sollten Sie diese als Referenz verwenden. Die erste Zeile des laufenden Ergebnisses besteht darin, die im Konstruktor übergebenen Parameter s direkt auszugeben; die zweite Zeile besteht darin, den Wert der übergebenen Parameter s zuerst der Mitgliedsvariablen s zuzuweisen und dann zu drucken , also ist das Ergebnis HelloWorld! Und die vierte Zeile druckt direkt den Wert der Mitgliedsvariablen in der Klasse in der Hauptfunktion, und Sie können auch die Änderung des Mitgliedsvariablenwerts überprüfen.
2. Wenn Sie sich selbst als Parameter übergeben, können Sie dies auch verwenden (dies wird als aktueller Parameter übergeben)
class A { public A() { new B(this).print();// 调用B的方法 } public void print() { System.out.println("HelloAA from A!"); } } class B { A a; public B(A a) { this.a = a; } public void print() { a.print();//调用A的方法 System.out.println("HelloAB from B!"); } } public class HelloA { public static void main(String[] args) { A aaa = new A(); aaa.print(); B bbb = new B(aaa); bbb.print(); } }
Das Ergebnis ist:
HelloAA from A! HelloAB from B! HelloAA from A! HelloAA from A! HelloAB from B!
Verwenden Sie in diesem Beispiel im Konstruktor von Objekt A neues B ( this) übergibt Objekt A selbst als Parameter an den Konstruktor von Objekt B.
3. Manchmal verwenden wir einige interne Klassen und anonyme Klassen, wie zum Beispiel die Ereignisverarbeitung. Wenn dies in einer anonymen Klasse verwendet wird, bezieht sich dies auf die anonyme Klasse oder innere Klasse selbst. Wenn wir zu diesem Zeitpunkt die Methoden und Variablen der externen Klasse verwenden möchten, sollten wir den Klassennamen der externen Klasse hinzufügen. Zum Beispiel:
public class HelloB { int i = 1; public HelloB() { Thread thread = new Thread() { public void run() { for (int j=0;j<20;j++) { HelloB.this.run();//调用外部类的方法 try { sleep(1000); } catch (InterruptedException ie) { } } } }; // 注意这里有分号 thread.start(); } public void run() { System.out.println("i = " + i); i++; } public static void main(String[] args) throws Exception { new HelloB(); } }
Im obigen Beispiel ist Thread ein anonymes Klassenobjekt. In seiner Definition verwendet seine Ausführungsfunktion die Ausführungsfunktion der externen Klasse. Da die Funktion derzeit denselben Namen hat, funktioniert ein direkter Aufruf nicht. Derzeit gibt es zwei Möglichkeiten, den Namen der externen Ausführungsfunktion zu ändern. Diese Methode ist jedoch nicht für eine Anwendung geeignet, die bereits zur Hälfte entwickelt ist. Dann können Sie die Methode in diesem Beispiel verwenden, um den Klassennamen der externen Klasse und diese Referenz zu verwenden, um anzugeben, dass der Methodenlauf der externen Klasse aufgerufen werden soll.
4. Im Konstruktor können Sie dadurch andere Konstruktoren in derselben Klasse aufrufen. Zum Beispiel:
public class ThisTest { ThisTest(String str) { System.out.println(str); } ThisTest() { this("this测试成功!"); } public static void main(String[] args) { ThisTest thistest = new ThisTest(); } }
Um die Verwendung davon genauer zu erklären, ist ein weiteres Beispiel:
public class ThisTest { private int age; private String str; ThisTest(String str) { this.str=str; System.out.println(str); } ThisTest(String str,int age) { this(str); this.age=age; System.out.println(age); } public static void main(String[] args) { ThisTest thistest = new ThisTest("this测试成功",25); } }
Das Ergebnis ist:
this测试成功 25
Es ist erwähnenswert:
1: Beim Aufrufen eines anderen Konstruktors während der Konstruktion ist die aufrufende Aktion muss am Ende der Startposition platziert werden.
2: Der Konstruktor kann in keiner anderen Funktion als dem Konstruktor aufgerufen werden.
3: Innerhalb eines Konstruktors kann nur ein Konstruktor aufgerufen werden.
5. Dadurch werden mehrere Parameter gleichzeitig übergeben.
public class TestClass { int x; int y; static void showtest(TestClass tc) {//实例化对象 System.out.println(tc.x + " " + tc.y); } void seeit() { showtest(this); } public static void main(String[] args) { TestClass p = new TestClass(); p.x = 9; p.y = 10; p.seeit(); } }
Das Ergebnis ist:
9 10
showtest(this) im Code, wobei hiermit das aktuell instanziierte p an die Methode showtest() übergeben und dann ausgeführt wird.
Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Einführung in die Programmierung! !
Das obige ist der detaillierte Inhalt vonWie verwende ich dieses Schlüsselwort in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!