Voi olla paljon käyttöä Java tämä avainsana . Javassa tämä on a viitemuuttuja joka viittaa nykyiseen kohteeseen.
Java tämän avainsanan käyttö
Tässä on annettu tämän avainsanan javan käyttö 6.
- tätä voidaan käyttää viittaamaan nykyiseen luokan ilmentymän muuttujaan.
- tätä voidaan käyttää nykyisen luokan menetelmän kutsumiseen (implisiittisesti)
- tätä() voidaan käyttää nykyisen luokan rakentajan kutsumiseen.
- tämä voidaan välittää argumenttina metodikutsussa.
- tämä voidaan välittää argumenttina konstruktorikutsussa.
- 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öä.
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