Es kann viel Verwendung geben Java dieses Schlüsselwort . In Java ist dies ein Referenzgröße das bezieht sich auf das aktuelle Objekt.
Verwendung dieses Schlüsselworts in Java
Hier wird die sechste Verwendung dieses Schlüsselworts in Java angegeben.
- Dies kann verwendet werden, um auf die aktuelle Klasseninstanzvariable zu verweisen.
- Dies kann verwendet werden, um die aktuelle Klassenmethode aufzurufen (implizit)
- this() kann verwendet werden, um den aktuellen Klassenkonstruktor aufzurufen.
- Dies kann als Argument im Methodenaufruf übergeben werden.
- Dies kann als Argument im Konstruktoraufruf übergeben werden.
- Dies kann verwendet werden, um die aktuelle Klasseninstanz von der Methode zurückzugeben.
Anregung: Wenn Sie Java-Anfänger sind, suchen Sie nur nach drei Verwendungsmöglichkeiten dieses Schlüsselworts.
1) dies: um auf die aktuelle Klasseninstanzvariable zu verweisen
Das Schlüsselwort this kann verwendet werden, um auf die aktuelle Klasseninstanzvariable zu verweisen. Wenn zwischen den Instanzvariablen und -parametern Unklarheiten bestehen, löst dieses Schlüsselwort das Problem der Mehrdeutigkeit.
Das Problem ohne dieses Schlüsselwort verstehen
Lassen Sie uns anhand des folgenden Beispiels verstehen, welches Problem auftritt, wenn wir dieses Schlüsselwort nicht verwenden:
Liste der Schriftarten in Gimp
class Student{ int rollno; String name; float fee; Student(int rollno,String name,float fee){ rollno=rollno; name=name; fee=fee; } void display(){System.out.println(rollno+' '+name+' '+fee);} } class TestThis1{ public static void main(String args[]){ Student s1=new Student(111,'ankit',5000f); Student s2=new Student(112,'sumit',6000f); s1.display(); s2.display(); }}Testen Sie es jetzt
Ausgabe:
0 null 0.0 0 null 0.0
Im obigen Beispiel sind Parameter (formale Argumente) und Instanzvariablen gleich. Daher verwenden wir dieses Schlüsselwort, um lokale Variablen und Instanzvariablen zu unterscheiden.
Lösung des oben genannten Problems mit diesem Schlüsselwort
class Student{ int rollno; String name; float fee; Student(int rollno,String name,float fee){ this.rollno=rollno; this.name=name; this.fee=fee; } void display(){System.out.println(rollno+' '+name+' '+fee);} } class TestThis2{ public static void main(String args[]){ Student s1=new Student(111,'ankit',5000f); Student s2=new Student(112,'sumit',6000f); s1.display(); s2.display(); }}Testen Sie es jetzt
Ausgabe:
111 ankit 5000.0 112 sumit 6000.0
Wenn lokale Variablen (formale Argumente) und Instanzvariablen unterschiedlich sind, besteht keine Notwendigkeit, dieses Schlüsselwort wie im folgenden Programm zu verwenden:
Programm, bei dem dieses Schlüsselwort nicht erforderlich ist
class Student{ int rollno; String name; float fee; Student(int r,String n,float f){ rollno=r; name=n; fee=f; } void display(){System.out.println(rollno+' '+name+' '+fee);} } class TestThis3{ public static void main(String args[]){ Student s1=new Student(111,'ankit',5000f); Student s2=new Student(112,'sumit',6000f); s1.display(); s2.display(); }}Testen Sie es jetzt
Ausgabe:
Volladdierer-Wahrheitstabelle
111 ankit 5000.0 112 sumit 6000.0
Es ist besser, aussagekräftige Namen für Variablen zu verwenden. Deshalb verwenden wir in Echtzeit Instanzvariablen und Parameter mit demselben Namen und verwenden immer dieses Schlüsselwort.
2) Dies: um die aktuelle Klassenmethode aufzurufen
Sie können die Methode der aktuellen Klasse aufrufen, indem Sie das Schlüsselwort this verwenden. Wenn Sie das Schlüsselwort this nicht verwenden, fügt der Compiler dieses Schlüsselwort beim Aufruf der Methode automatisch hinzu. Sehen wir uns das Beispiel an
class A{ void m(){System.out.println('hello m');} void n(){ System.out.println('hello n'); //m();//same as this.m() this.m(); } } class TestThis4{ public static void main(String args[]){ A a=new A(); a.n(); }}Testen Sie es jetzt
Ausgabe:
hello n hello m
3) this(): um den aktuellen Klassenkonstruktor aufzurufen
Mit dem Konstruktoraufruf this() kann der aktuelle Klassenkonstruktor aufgerufen werden. Es wird verwendet, um den Konstruktor wiederzuverwenden. Mit anderen Worten, es wird zur Konstruktorverkettung verwendet.
Aufruf des Standardkonstruktors vom parametrisierten Konstruktor:
class A{ A(){System.out.println('hello a');} A(int x){ this(); System.out.println(x); } } class TestThis5{ public static void main(String args[]){ A a=new A(10); }}Testen Sie es jetzt
Ausgabe:
hello a 10
Aufruf des parametrisierten Konstruktors vom Standardkonstruktor:
class A{ A(){ this(5); System.out.println('hello a'); } A(int x){ System.out.println(x); } } class TestThis6{ public static void main(String args[]){ A a=new A(); }}Testen Sie es jetzt
Ausgabe:
Freddie Mercury geboren
5 hello a
Echte Verwendung des Konstruktoraufrufs this()
Der Konstruktoraufruf this() sollte verwendet werden, um den Konstruktor aus dem Konstruktor wiederzuverwenden. Es verwaltet die Kette zwischen den Konstruktoren, d. h. es wird für die Konstruktorverkettung verwendet. Sehen wir uns das folgende Beispiel an, das die tatsächliche Verwendung dieses Schlüsselworts zeigt.
class Student{ int rollno; String name,course; float fee; Student(int rollno,String name,String course){ this.rollno=rollno; this.name=name; this.course=course; } Student(int rollno,String name,String course,float fee){ this(rollno,name,course);//reusing constructor this.fee=fee; } void display(){System.out.println(rollno+' '+name+' '+course+' '+fee);} } class TestThis7{ public static void main(String args[]){ Student s1=new Student(111,'ankit','java'); Student s2=new Student(112,'sumit','java',6000f); s1.display(); s2.display(); }}Testen Sie es jetzt
Ausgabe:
111 ankit java 0.0 112 sumit java 6000.0
Regel: Der Aufruf von this() muss die erste Anweisung im Konstruktor sein.
class Student{ int rollno; String name,course; float fee; Student(int rollno,String name,String course){ this.rollno=rollno; this.name=name; this.course=course; } Student(int rollno,String name,String course,float fee){ this.fee=fee; this(rollno,name,course);//C.T.Error } void display(){System.out.println(rollno+' '+name+' '+course+' '+fee);} } class TestThis8{ public static void main(String args[]){ Student s1=new Student(111,'ankit','java'); Student s2=new Student(112,'sumit','java',6000f); s1.display(); s2.display(); }}Testen Sie es jetzt
Ausgabe:
Compile Time Error: Call to this must be first statement in constructor
4) Dies: als Argument in der Methode übergeben
Das Schlüsselwort this kann auch als Argument in der Methode übergeben werden. Es wird hauptsächlich im Event-Handling eingesetzt. Sehen wir uns das Beispiel an:
class S2{ void m(S2 obj){ System.out.println('method is invoked'); } void p(){ m(this); } public static void main(String args[]){ S2 s1 = new S2(); s1.p(); } }Testen Sie es jetzt
Ausgabe:
method is invoked
Anwendung davon, die als Argument übergeben werden kann:
Bei der Ereignisbehandlung (oder) in einer Situation, in der wir eine Referenz einer Klasse auf eine andere bereitstellen müssen. Es wird verwendet, um ein Objekt in vielen Methoden wiederzuverwenden.
5) dies: als Argument im Konstruktoraufruf zu übergeben
Wir können das Schlüsselwort this auch im Konstruktor übergeben. Dies ist nützlich, wenn wir ein Objekt in mehreren Klassen verwenden müssen. Sehen wir uns das Beispiel an:
C#-Tutorial
class B{ A4 obj; B(A4 obj){ this.obj=obj; } void display(){ System.out.println(obj.data);//using data member of A4 class } } class A4{ int data=10; A4(){ B b=new B(this); b.display(); } public static void main(String args[]){ A4 a=new A4(); } }Testen Sie es jetzt
Output:10
6) Dieses Schlüsselwort kann verwendet werden, um die aktuelle Klasseninstanz zurückzugeben
Wir können dieses Schlüsselwort als Anweisung der Methode zurückgeben. In einem solchen Fall muss der Rückgabetyp der Methode der Klassentyp sein (nicht primitiv). Sehen wir uns das Beispiel an:
Syntax davon, die als Anweisung zurückgegeben werden kann
return_type method_name(){ return this; }
Beispiel für dieses Schlüsselwort, das Sie als Anweisung von der Methode zurückgeben
class A{ A getA(){ return this; } void msg(){System.out.println('Hello java');} } class Test1{ public static void main(String args[]){ new A().getA().msg(); } }Testen Sie es jetzt
Ausgabe:
Hello java
Beweisen Sie dieses Schlüsselwort
Lassen Sie uns beweisen, dass sich dieses Schlüsselwort auf die aktuelle Klasseninstanzvariable bezieht. In diesem Programm drucken wir die Referenzvariable und die Ausgabe beider Variablen ist gleich.
class A5{ void m(){ System.out.println(this);//prints same reference ID } public static void main(String args[]){ A5 obj=new A5(); System.out.println(obj);//prints the reference ID obj.m(); } }Testen Sie es jetzt
Ausgabe:
A5@22b3ea59 A5@22b3ea59