logo

tämä avainsana Javassa

Voi olla paljon käyttöä Java tämä avainsana . Javassa tämä on a viitemuuttuja joka viittaa nykyiseen kohteeseen.

java tämä avainsana

Java tämän avainsanan käyttö

Tässä on annettu tämän avainsanan javan käyttö 6.

  1. tätä voidaan käyttää viittaamaan nykyiseen luokan ilmentymän muuttujaan.
  2. tätä voidaan käyttää nykyisen luokan menetelmän kutsumiseen (implisiittisesti)
  3. tätä() voidaan käyttää nykyisen luokan rakentajan kutsumiseen.
  4. tämä voidaan välittää argumenttina metodikutsussa.
  5. tämä voidaan välittää argumenttina konstruktorikutsussa.
  6. tätä voidaan käyttää palauttamaan nykyisen luokan ilmentymä menetelmästä.

Ehdotus: Jos olet aloittelija javan käytössä, etsi vain kolme tämän avainsanan käyttöä.

Java tämän avainsanan käyttö

1) tämä: viittaamaan nykyisen luokan ilmentymän muuttujaan

Tätä avainsanaa voidaan käyttää viittaamaan nykyiseen luokan esiintymän muuttujaan. Jos esiintymän muuttujien ja parametrien välillä on epäselvyyttä, tämä avainsana ratkaisee epäselvyysongelman.

Ongelman ymmärtäminen ilman tätä avainsanaa

Ymmärretään ongelma, jos emme käytä tätä avainsanaa alla olevan esimerkin mukaisesti:

päivämäärä merkkijono java
 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(); }} 
Testaa nyt

Lähtö:

 0 null 0.0 0 null 0.0 

Yllä olevassa esimerkissä parametrit (muodolliset argumentit) ja ilmentymämuuttujat ovat samat. Joten käytämme tätä avainsanaa paikallisen muuttujan ja esiintymämuuttujan erottamiseen.

Ratkaisu yllä olevaan ongelmaan tällä avainsanalla

 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(); }} 
Testaa nyt

Lähtö:

 111 ankit 5000.0 112 sumit 6000.0 

Jos paikalliset muuttujat (muodolliset argumentit) ja ilmentymämuuttujat ovat erilaisia, tätä avainsanaa ei tarvitse käyttää kuten seuraavassa ohjelmassa:

Ohjelma, jossa tätä avainsanaa ei vaadita

 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(); }} 
Testaa nyt

Lähtö:

pandas loc
 111 ankit 5000.0 112 sumit 6000.0 

On parempi tapa käyttää merkityksellisiä nimiä muuttujille. Käytämme siis samaa nimeä esimerkiksi muuttujille ja parametreille reaaliajassa ja käytämme aina tätä avainsanaa.


2) tämä: kutsua nykyisen luokan menetelmä

Voit kutsua nykyisen luokan metodin käyttämällä tätä avainsanaa. Jos et käytä tätä avainsanaa, kääntäjä lisää tämän avainsanan automaattisesti kutsuessaan menetelmää. Katsotaanpa esimerkkiä

 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(); }} 
Testaa nyt

Lähtö:

 hello n hello m 

3) this() : kutsua nykyisen luokan rakentaja

This()-konstruktorikutsua voidaan käyttää nykyisen luokan rakentajan kutsumiseen. Sitä käytetään rakentajan uudelleenkäyttöön. Toisin sanoen sitä käytetään rakentajien ketjuttamiseen.

Oletuskonstruktorin kutsuminen parametroidusta konstruktorista:

 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); }} 
Testaa nyt

Lähtö:

 hello a 10 

Parametrisoidun konstruktorin kutsuminen oletuskonstruktorista:

 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(); }} 
Testaa nyt

Lähtö:

java-taulukkolajittelu
 5 hello a 

Tämän()-konstruktorikutsun todellinen käyttö

Tämä()-konstruktorikutsua tulisi käyttää rakentajan käyttämiseen uudelleen rakentajasta. Se ylläpitää rakentajien välistä ketjua eli sitä käytetään rakentajien ketjuttamiseen. Katsotaanpa alla olevaa esimerkkiä, joka näyttää tämän avainsanan todellisen käytön.

 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(); }} 
Testaa nyt

Lähtö:

 111 ankit java 0.0 112 sumit java 6000.0 

Sääntö: Kutsun tähän() on oltava konstruktorin ensimmäinen lause.

 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(); }} 
Testaa nyt

Lähtö:

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

4) tämä: ohittaa argumenttina menetelmässä

Tämä avainsana voidaan myös välittää argumenttina menetelmässä. Sitä käytetään pääasiassa tapahtumien käsittelyssä. Katsotaanpa esimerkkiä:

 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(); } } 
Testaa nyt

Lähtö:

 method is invoked 

Tämän sovellus, joka voidaan antaa argumenttina:

Tapahtumien käsittelyssä (tai) tilanteessa, jossa meidän on annettava viittaus luokkaan toiseen. Sitä käytetään yhden objektin uudelleenkäyttöön useissa menetelmissä.


5) tämä: välittää argumenttina konstruktorikutsussa

Voimme välittää tämän avainsanan myös rakentajassa. Se on hyödyllistä, jos joudumme käyttämään yhtä objektia useissa luokissa. Katsotaanpa esimerkkiä:

jdbc jdbc
 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(); } } 
Testaa nyt
 Output:10 

6) tätä avainsanaa voidaan käyttää palauttamaan nykyisen luokan esiintymän

Voimme palauttaa tämän avainsanan lausekkeena menetelmästä. Tällöin menetelmän palautustyypin on oltava luokkatyyppi (ei-primitiivinen). Katsotaanpa esimerkkiä:

Tämän syntaksi, joka voidaan palauttaa lausekkeena

 return_type method_name(){ return this; } 

Esimerkki tästä avainsanasta, jonka palautat lausekkeena menetelmästä

 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(); } } 
Testaa nyt

Lähtö:

 Hello java 

Todistaen tämän avainsanan

Osoitetaan, että tämä avainsana viittaa nykyiseen luokan esiintymän muuttujaan. Tässä ohjelmassa tulostetaan viitemuuttuja ja tämä, molempien muuttujien tulosteet ovat samat.

 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(); } } 
Testaa nyt

Lähtö:

 A5@22b3ea59 A5@22b3ea59