logo

ovu ključnu riječ u Javi

Može se mnogo koristiti Java ovu ključnu riječ . U Javi je ovo a referentna varijabla koji se odnosi na trenutni objekt.

java ovu ključnu riječ

Upotreba ove ključne riječi u Javi

Ovdje se daje 6 upotreba jave ove ključne riječi.

  1. ovo se može koristiti za upućivanje na varijablu instance trenutne klase.
  2. ovo se može koristiti za pozivanje metode trenutne klase (implicitno)
  3. this() se može koristiti za pozivanje trenutnog konstruktora klase.
  4. ovo se može proslijediti kao argument u pozivu metode.
  5. ovo se može proslijediti kao argument u pozivu konstruktora.
  6. ovo se može koristiti za vraćanje trenutne instance klase iz metode.

Prijedlog: Ako ste početnik u Javi, potražite samo tri upotrebe ove ključne riječi.

Upotreba ove ključne riječi u Javi

1) ovo: uputiti na varijablu instance trenutne klase

Ova ključna riječ može se koristiti za upućivanje na varijablu instance trenutne klase. Ako postoji dvosmislenost između varijabli instance i parametara, ova ključna riječ rješava problem dvosmislenosti.

Razumijevanje problema bez ove ključne riječi

Shvatimo problem ako ne koristimo ovu ključnu riječ pomoću donjeg primjera:

pretvoriti booleov u niz
 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(); }} 
Testirajte sada

Izlaz:

 0 null 0.0 0 null 0.0 

U gornjem primjeru, parametri (formalni argumenti) i varijable instance su isti. Dakle, koristimo ovu ključnu riječ za razlikovanje lokalne varijable i varijable instance.

Rješenje gornjeg problema ovom ključnom riječi

 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(); }} 
Testirajte sada

Izlaz:

 111 ankit 5000.0 112 sumit 6000.0 

Ako su lokalne varijable (formalni argumenti) i varijable instance različite, nema potrebe koristiti ovu ključnu riječ kao u sljedećem programu:

Program u kojem ova ključna riječ nije 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(); }} 
Testirajte sada

Izlaz:

 111 ankit 5000.0 112 sumit 6000.0 

Bolji je pristup koristiti smislena imena za varijable. Stoga koristimo isto ime za varijable instance i parametre u stvarnom vremenu i uvijek koristimo ovu ključnu riječ.


2) ovo: za pozivanje metode trenutne klase

Možete pozvati metodu trenutne klase korištenjem ove ključne riječi. Ako ne koristite ovu ključnu riječ, prevodilac automatski dodaje ovu ključnu riječ dok poziva metodu. Pogledajmo primjer

podniz niz java
 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(); }} 
Testirajte sada

Izlaz:

 hello n hello m 

3) this() : za pozivanje trenutnog konstruktora klase

Poziv this() konstruktora može se koristiti za pozivanje trenutnog konstruktora klase. Koristi se za ponovno korištenje konstruktora. Drugim riječima, koristi se za ulančavanje konstruktora.

Pozivanje zadanog konstruktora iz parametriziranog 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); }} 
Testirajte sada

Izlaz:

 hello a 10 

Pozivanje parametriziranog konstruktora iz zadanog 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(); }} 
Testirajte sada

Izlaz:

 5 hello a 

Stvarna upotreba poziva konstruktora this().

Poziv konstruktora this() trebao bi se koristiti za ponovno korištenje konstruktora iz konstruktora. Održava lanac između konstruktora tj. koristi se za ulančavanje konstruktora. Pogledajmo donji primjer koji prikazuje stvarnu upotrebu ove ključne riječi.

 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(); }} 
Testirajte sada

Izlaz:

 111 ankit java 0.0 112 sumit java 6000.0 

Pravilo: Poziv this() mora biti prva izjava u konstruktoru.

 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(); }} 
Testirajte sada

Izlaz:

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

4) ovo: proslijediti kao argument u metodi

Ova ključna riječ također se može proslijediti kao argument u metodi. Uglavnom se koristi u obradi događaja. Pogledajmo primjer:

 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(); } } 
Testirajte sada

Izlaz:

 method is invoked 

Primjena ovoga koja se može proslijediti kao argument:

U rukovanju događajem (ili) u situaciji kada moramo dati referencu klase na drugu. Koristi se za ponovnu upotrebu jednog objekta u mnogim metodama.


5) ovo: proslijediti kao argument u pozivu konstruktora

Također možemo prenijeti ovu ključnu riječ u konstruktor. Korisno je ako moramo koristiti jedan objekt u više klasa. Pogledajmo primjer:

10 od 1 milijuna
 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(); } } 
Testirajte sada
 Output:10 

6) ova se ključna riječ može koristiti za vraćanje trenutne instance klase

Ovu ključnu riječ možemo vratiti kao iskaz iz metode. U tom slučaju povratni tip metode mora biti tip klase (neprimitivan). Pogledajmo primjer:

Sintaksa ovoga koja se može vratiti kao izjava

 return_type method_name(){ return this; } 

Primjer ove ključne riječi koju vraćate kao iskaz iz 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(); } } 
Testirajte sada

Izlaz:

 Hello java 

Dokazivanje ove ključne riječi

Dokažimo da se ova ključna riječ odnosi na trenutnu varijablu instance klase. U ovom programu ispisujemo referentnu varijablu, a izlaz obje varijable je isti.

 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(); } } 
Testirajte sada

Izlaz:

 A5@22b3ea59 A5@22b3ea59