Var izmantot daudz Java šo atslēgvārdu . Java valodā tas ir a atsauces mainīgais kas attiecas uz pašreizējo objektu.
Java šī atslēgvārda izmantošana
Šeit ir norādīts 6 šī atslēgvārda Java lietojums.
- to var izmantot, lai atsauktos uz pašreizējo klases instances mainīgo.
- to var izmantot, lai izsauktu pašreizējo klases metodi (netieši)
- šo() var izmantot, lai izsauktu pašreizējo klases konstruktoru.
- to var nodot kā argumentu metodes izsaukumā.
- to var nodot kā argumentu konstruktora izsaukumā.
- to var izmantot, lai atgrieztu pašreizējo klases gadījumu no metodes.
Ieteikums: Ja esat iesācējs java, meklējiet tikai trīs šī atslēgvārda lietojumus.
1) šis: lai atsauktos uz pašreizējo klases gadījuma mainīgo
Šo atslēgvārdu var izmantot, lai atsauktos uz pašreizējo klases gadījumu mainīgo. Ja starp instanču mainīgajiem un parametriem ir neskaidrības, šis atslēgvārds atrisina neskaidrības problēmu.
Problēmas izpratne bez šī atslēgvārda
Izpratīsim problēmu, ja neizmantojam šo atslēgvārdu, izmantojot tālāk sniegto piemēru:
primārās atslēgas saliktā atslēga
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(); }}Izmēģiniet to tagad
Izvade:
0 null 0.0 0 null 0.0
Iepriekš minētajā piemērā parametri (formālie argumenti) un gadījumu mainīgie ir vienādi. Tātad, mēs izmantojam šo atslēgvārdu, lai atšķirtu vietējo mainīgo un gadījumu mainīgo.
Iepriekš minētās problēmas risinājums ar šo atslēgvārdu
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(); }}Izmēģiniet to tagad
Izvade:
111 ankit 5000.0 112 sumit 6000.0
Ja vietējie mainīgie (formālie argumenti) un instanču mainīgie atšķiras, nav nepieciešams izmantot šo atslēgvārdu, piemēram, šajā programmā:
Programma, kurā šis atslēgvārds nav nepieciešams
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(); }}Izmēģiniet to tagad
Izvade:
atlasiet vairāku tabulu sql
111 ankit 5000.0 112 sumit 6000.0
Labāk ir izmantot jēgpilnus nosaukumus mainīgajiem. Tāpēc mēs izmantojam vienu un to pašu nosaukumu, piemēram, mainīgajiem un parametriem reāllaikā, un vienmēr lietojam šo atslēgvārdu.
2) šis: lai izsauktu pašreizējo klases metodi
Jūs varat izsaukt pašreizējās klases metodi, izmantojot šo atslēgvārdu. Ja neizmantojat šo atslēgvārdu, kompilators automātiski pievieno šo atslēgvārdu, izsaucot metodi. Apskatīsim piemēru
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(); }}Izmēģiniet to tagad
Izvade:
hello n hello m
3) this() : lai izsauktu pašreizējo klases konstruktoru
Konstruktora this() izsaukumu var izmantot, lai izsauktu pašreizējo klases konstruktoru. To izmanto, lai atkārtoti izmantotu konstruktoru. Citiem vārdiem sakot, to izmanto konstruktora ķēdēšanai.
Noklusējuma konstruktora izsaukšana no parametrizēta konstruktora:
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); }}Izmēģiniet to tagad
Izvade:
hello a 10
Parametrēta konstruktora izsaukšana no noklusējuma konstruktora:
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(); }}Izmēģiniet to tagad
Izvade:
rj12 pret rj11
5 hello a
Šī() konstruktora izsaukuma reālā izmantošana
Konstruktora izsaukums this() ir jāizmanto, lai atkārtoti izmantotu konstruktoru no konstruktora. Tas uztur ķēdi starp konstruktoriem, t.i., to izmanto konstruktoru ķēdēšanai. Apskatīsim tālāk sniegto piemēru, kas parāda šī atslēgvārda faktisko lietojumu.
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(); }}Izmēģiniet to tagad
Izvade:
111 ankit java 0.0 112 sumit java 6000.0
Noteikums: izsaukumam uz this() ir jābūt pirmajam konstruktora priekšrakstam.
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(); }}Izmēģiniet to tagad
Izvade:
Compile Time Error: Call to this must be first statement in constructor
4) šis: iziet kā argumentu metodē
Šo atslēgvārdu metodē var nodot arī kā argumentu. To galvenokārt izmanto notikumu apstrādē. Apskatīsim piemēru:
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(); } }Izmēģiniet to tagad
Izvade:
method is invoked
Tā pielietojums, ko var nodot kā argumentu:
Notikumu apstrādē (vai) situācijā, kad mums ir jānodrošina klases atsauce uz citu. To izmanto, lai atkārtoti izmantotu vienu objektu daudzās metodēs.
5) this: nodot kā argumentu konstruktora izsaukumā
Šo atslēgvārdu varam nodot arī konstruktorā. Tas ir noderīgi, ja mums ir jāizmanto viens objekts vairākās klasēs. Apskatīsim piemēru:
izsaiņošana linuxā
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(); } }Izmēģiniet to tagad
Output:10
6) šo atslēgvārdu var izmantot, lai atgrieztu pašreizējo klases gadījumu
Mēs varam atgriezt šo atslēgvārdu kā paziņojumu no metodes. Šādā gadījumā metodes atgriešanas veidam jābūt klases tipam (neprimitīvam). Apskatīsim piemēru:
Šī sintakse, ko var atgriezt kā paziņojumu
return_type method_name(){ return this; }
Šī atslēgvārda piemērs, ko atgriežat kā paziņojumu no metodes
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(); } }Izmēģiniet to tagad
Izvade:
Hello java
Pierāda šo atslēgvārdu
Pierādīsim, ka šis atslēgvārds attiecas uz pašreizējās klases instances mainīgo. Šajā programmā mēs drukājam atsauces mainīgo, un abu mainīgo izvade ir vienāda.
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(); } }Izmēģiniet to tagad
Izvade:
A5@22b3ea59 A5@22b3ea59