logo

šis atslēgvārds Java valodā

Var izmantot daudz Java šo atslēgvārdu . Java valodā tas ir a atsauces mainīgais kas attiecas uz pašreizējo objektu.

java šis atslēgvārds

Java šī atslēgvārda izmantošana

Šeit ir norādīts 6 šī atslēgvārda Java lietojums.

  1. to var izmantot, lai atsauktos uz pašreizējo klases instances mainīgo.
  2. to var izmantot, lai izsauktu pašreizējo klases metodi (netieši)
  3. šo() var izmantot, lai izsauktu pašreizējo klases konstruktoru.
  4. to var nodot kā argumentu metodes izsaukumā.
  5. to var nodot kā argumentu konstruktora izsaukumā.
  6. 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.

Java šī atslēgvārda izmantošana

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