Uporabe je lahko veliko Java to ključno besedo . V Javi je to a referenčna spremenljivka ki se nanaša na trenutni predmet.
Uporaba Jave ta ključna beseda
Tukaj je podana 6 uporaba jave te ključne besede.
- to lahko uporabite za sklicevanje na spremenljivko primerka trenutnega razreda.
- to lahko uporabite za priklic trenutne metode razreda (implicitno)
- this() lahko uporabite za priklic trenutnega konstruktorja razreda.
- to lahko posredujete kot argument v klicu metode.
- to lahko posredujete kot argument v klicu konstruktorja.
- to lahko uporabite za vrnitev trenutnega primerka razreda iz metode.
Predlog: Če ste začetnik v Javi, poiščite samo tri uporabe te ključne besede.
1) to: za sklic na spremenljivko primerka trenutnega razreda
Ključno besedo this lahko uporabite za sklicevanje na spremenljivko primerka trenutnega razreda. Če obstaja dvoumnost med spremenljivkami primerka in parametri, ta ključna beseda odpravi težavo dvoumnosti.
Razumevanje problema brez te ključne besede
Razumejmo težavo, če ne uporabimo te ključne besede, s spodnjim primerom:
polje dodajanje elementov 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(); }}Preizkusite zdaj
Izhod:
0 null 0.0 0 null 0.0
V zgornjem primeru so parametri (formalni argumenti) in spremenljivke primerka enaki. Torej, to ključno besedo uporabljamo za razlikovanje lokalne spremenljivke in spremenljivke primerka.
Rešitev zgornjega problema s to ključno besedo
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(); }}Preizkusite zdaj
Izhod:
111 ankit 5000.0 112 sumit 6000.0
Če so lokalne spremenljivke (formalni argumenti) in spremenljivke primerka različne, ni potrebe po uporabi te ključne besede, kot v naslednjem programu:
pretvori niz v int v javi
Program, kjer ta ključna beseda ni potrebna
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(); }}Preizkusite zdaj
Izhod:
111 ankit 5000.0 112 sumit 6000.0
Boljši pristop je uporaba smiselnih imen za spremenljivke. Tako uporabljamo isto ime za na primer spremenljivke in parametre v realnem času in vedno uporabljamo to ključno besedo.
2) to: za priklic metode trenutnega razreda
Metodo trenutnega razreda lahko prikličete z uporabo ključne besede this. Če ne uporabite ključne besede this, prevajalnik med priklicem metode samodejno doda to ključno besedo. Poglejmo primer
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(); }}Preizkusite zdaj
Izhod:
hello n hello m
3) this() : za priklic trenutnega konstruktorja razreda
Klic konstruktorja this() lahko uporabite za priklic trenutnega konstruktorja razreda. Uporablja se za ponovno uporabo konstruktorja. Z drugimi besedami, uporablja se za veriženje konstruktorjev.
Klicanje privzetega konstruktorja iz parametriranega konstruktorja:
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); }}Preizkusite zdaj
Izhod:
hello a 10
Klicanje parametriziranega konstruktorja iz privzetega konstruktorja:
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(); }}Preizkusite zdaj
Izhod:
5 hello a
Dejanska uporaba klica konstruktorja this().
Klic konstruktorja this() je treba uporabiti za ponovno uporabo konstruktorja iz konstruktorja. Ohranja verigo med konstruktorji, tj. uporablja se za veriženje konstruktorjev. Oglejmo si spodnji primer, ki prikazuje dejansko uporabo te ključne besede.
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(); }}Preizkusite zdaj
Izhod:
111 ankit java 0.0 112 sumit java 6000.0
Pravilo: Klic this() mora biti prvi stavek v konstruktorju.
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(); }}Preizkusite zdaj
Izhod:
Compile Time Error: Call to this must be first statement in constructor
4) to: prenesti kot argument v metodi
Ključno besedo this lahko posredujete tudi kot argument v metodi. Uporablja se predvsem pri obravnavi dogodkov. Poglejmo primer:
jedrni jezik java
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(); } }Preizkusite zdaj
Izhod:
method is invoked
Uporaba tega, ki se lahko posreduje kot argument:
Pri obravnavanju dogodkov (ali) v situaciji, ko moramo zagotoviti referenco razreda na drugega. Uporablja se za ponovno uporabo enega predmeta v številnih metodah.
5) to: prenesti kot argument v klicu konstruktorja
To ključno besedo lahko posredujemo tudi v konstruktorju. Uporabno je, če moramo uporabiti en objekt v več razredih. Poglejmo primer:
kaj je vmesnik
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(); } }Preizkusite zdaj
Output:10
6) to ključno besedo lahko uporabite za vrnitev trenutnega primerka razreda
To ključno besedo lahko vrnemo kot izjavo metode. V takem primeru mora biti povratni tip metode tip razreda (neprimitivni). Poglejmo primer:
Sintaksa tega, ki se lahko vrne kot stavek
return_type method_name(){ return this; }
Primer te ključne besede, ki jo vrnete kot stavek metode
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(); } }Preizkusite zdaj
Izhod:
Hello java
Dokazovanje te ključne besede
Dokažimo, da se ta ključna beseda nanaša na trenutno spremenljivko primerka razreda. V tem programu natisnemo referenčno spremenljivko in to, izhod obeh spremenljivk je enak.
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(); } }Preizkusite zdaj
Izhod:
A5@22b3ea59 A5@22b3ea59