logo

dit trefwoord in Java

Er kan veel gebruik van worden gemaakt Java dit trefwoord . Op Java is dit een referentievariabele dat verwijst naar het huidige object.

java dit zoekwoord

Gebruik van Java dit trefwoord

Hier wordt het gebruik van Java dit trefwoord gegeven.

  1. dit kan worden gebruikt om naar de huidige klasse-instantievariabele te verwijzen.
  2. dit kan worden gebruikt om de huidige klassenmethode aan te roepen (impliciet)
  3. this() kan worden gebruikt om de huidige klassenconstructor aan te roepen.
  4. dit kan als argument worden doorgegeven in de methodeaanroep.
  5. dit kan als argument worden doorgegeven in de constructoraanroep.
  6. dit kan worden gebruikt om de huidige klasse-instantie van de methode te retourneren.

Suggestie: Als u een beginner bent met Java, zoek dan slechts drie toepassingen van dit trefwoord op.

Gebruik van Java dit trefwoord

1) dit: om te verwijzen naar de huidige klasse-instantievariabele

Het trefwoord this kan worden gebruikt om naar de huidige klasse-instantievariabele te verwijzen. Als er dubbelzinnigheid bestaat tussen de instantievariabelen en parameters, lost dit trefwoord het probleem van dubbelzinnigheid op.

Het probleem begrijpen zonder dit trefwoord

Laten we het probleem begrijpen als we dit zoekwoord niet gebruiken aan de hand van het onderstaande voorbeeld:

naamgeving volgens Java-conventies
 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(); }} 
Test het nu

Uitgang:

 0 null 0.0 0 null 0.0 

In het bovenstaande voorbeeld zijn parameters (formele argumenten) en instantievariabelen hetzelfde. We gebruiken dit trefwoord dus om de lokale variabele en de instantievariabele te onderscheiden.

Oplossing van het bovenstaande probleem met dit trefwoord

 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(); }} 
Test het nu

Uitgang:

 111 ankit 5000.0 112 sumit 6000.0 

Als lokale variabelen (formele argumenten) en instantievariabelen verschillend zijn, is het niet nodig om dit trefwoord te gebruiken, zoals in het volgende programma:

Programma waarbij dit trefwoord niet vereist is

 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(); }} 
Test het nu

Uitgang:

 111 ankit 5000.0 112 sumit 6000.0 

Het is een betere aanpak om betekenisvolle namen voor variabelen te gebruiken. We gebruiken dus dezelfde naam voor bijvoorbeeld variabelen en parameters in realtime, en gebruiken altijd dit trefwoord.


2) dit: om de huidige klassenmethode aan te roepen

U kunt de methode van de huidige klasse aanroepen door het trefwoord this te gebruiken. Als u het trefwoord this niet gebruikt, voegt de compiler dit trefwoord automatisch toe terwijl de methode wordt aangeroepen. Laten we het voorbeeld bekijken

 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(); }} 
Test het nu

Uitgang:

converteer char naar string-java
 hello n hello m 

3) this() : om de huidige klassenconstructor aan te roepen

De constructoraanroep this() kan worden gebruikt om de huidige klasseconstructor aan te roepen. Het wordt gebruikt om de constructor opnieuw te gebruiken. Met andere woorden, het wordt gebruikt voor constructor-chaining.

Standaardconstructor aanroepen vanuit geparametriseerde constructor:

 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); }} 
Test het nu

Uitgang:

 hello a 10 

Geparametriseerde constructor aanroepen vanuit de standaardconstructor:

diskette
 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(); }} 
Test het nu

Uitgang:

 5 hello a 

Echt gebruik van deze() constructoraanroep

De constructoraanroep this() moet worden gebruikt om de constructor van de constructor opnieuw te gebruiken. Het onderhoudt de keten tussen de constructors, dat wil zeggen dat het wordt gebruikt voor het koppelen van constructors. Laten we het onderstaande voorbeeld bekijken dat het daadwerkelijke gebruik van dit trefwoord weergeeft.

 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(); }} 
Test het nu

Uitgang:

 111 ankit java 0.0 112 sumit java 6000.0 

Regel: Aanroep van this() moet de eerste instructie in de constructor zijn.

 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(); }} 
Test het nu

Uitgang:

 Compile Time Error: Call to this must be first statement in constructor 

4) dit: doorgeven als argument in de methode

Het trefwoord this kan ook als argument in de methode worden doorgegeven. Het wordt voornamelijk gebruikt bij de afhandeling van gebeurtenissen. Laten we het voorbeeld bekijken:

 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(); } } 
Test het nu

Uitgang:

 method is invoked 

Toepassing hiervan die als argument kan worden doorgegeven:

Bij het afhandelen van gebeurtenissen (of) in een situatie waarin we een verwijzing van een klasse naar een andere moeten geven. Het wordt in veel methoden gebruikt om één object opnieuw te gebruiken.


5) dit: om door te geven als argument in de constructoraanroep

We kunnen het trefwoord this ook in de constructor doorgeven. Het is handig als we één object in meerdere klassen moeten gebruiken. Laten we het voorbeeld bekijken:

Java-klasse voorbeeld
 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(); } } 
Test het nu
 Output:10 

6) dit sleutelwoord kan worden gebruikt om de huidige klasse-instantie te retourneren

We kunnen dit trefwoord retourneren als een statement uit de methode. In dat geval moet het retourtype van de methode het klassetype zijn (niet-primitief). Laten we het voorbeeld bekijken:

Syntaxis hiervan die als statement kan worden geretourneerd

 return_type method_name(){ return this; } 

Voorbeeld van dit trefwoord dat u als statement uit de methode retourneert

 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(); } } 
Test het nu

Uitgang:

 Hello java 

Bewijs dit trefwoord

Laten we bewijzen dat dit trefwoord verwijst naar de huidige klasse-instantievariabele. In dit programma drukken we de referentievariabele af en de uitvoer van beide variabelen is hetzelfde.

 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(); } } 
Test het nu

Uitgang:

 A5@22b3ea59 A5@22b3ea59