logo

acest cuvânt cheie în Java

Poate fi o mulțime de utilizare a Java acest cuvânt cheie . În Java, acesta este un variabila de referinta care se referă la obiectul curent.

java acest cuvânt cheie

Utilizarea Java a acestui cuvânt cheie

Aici este dată 6 utilizarea java a acestui cuvânt cheie.

  1. aceasta poate fi folosită pentru a se referi la variabila de instanță a clasei curente.
  2. aceasta poate fi folosită pentru a invoca metoda clasei curente (implicit)
  3. this() poate fi folosit pentru a invoca constructorul de clasă curent.
  4. acesta poate fi transmis ca argument în apelul de metodă.
  5. acesta poate fi transmis ca argument în apelul constructorului.
  6. aceasta poate fi folosită pentru a returna instanța de clasă curentă din metodă.

Sugestie: Dacă sunteți începător în Java, căutați doar trei utilizări ale acestui cuvânt cheie.

Utilizarea Java a acestui cuvânt cheie

1) aceasta: pentru a se referi la variabila de instanță a clasei curente

Cuvântul cheie this poate fi folosit pentru a face referire la variabila de instanță a clasei curente. Dacă există o ambiguitate între variabilele de instanță și parametrii, acest cuvânt cheie rezolvă problema ambiguității.

Înțelegerea problemei fără acest cuvânt cheie

Să înțelegem problema dacă nu folosim acest cuvânt cheie după exemplul de mai jos:

cum se transformă șirul în întreg
 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(); }} 
Testează-l acum

Ieșire:

 0 null 0.0 0 null 0.0 

În exemplul de mai sus, parametrii (argumentele formale) și variabilele de instanță sunt aceleași. Deci, folosim acest cuvânt cheie pentru a distinge variabila locală și variabila de instanță.

Rezolvarea problemei de mai sus prin acest cuvânt cheie

 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(); }} 
Testează-l acum

Ieșire:

s în python
 111 ankit 5000.0 112 sumit 6000.0 

Dacă variabilele locale (argumentele formale) și variabilele de instanță sunt diferite, nu este nevoie să utilizați acest cuvânt cheie ca în următorul program:

Program în care acest cuvânt cheie nu este necesar

 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(); }} 
Testează-l acum

Ieșire:

 111 ankit 5000.0 112 sumit 6000.0 

Este o abordare mai bună să folosiți nume semnificative pentru variabile. Deci folosim același nume, de exemplu, variabile și parametri în timp real și folosim întotdeauna acest cuvânt cheie.


2) aceasta: pentru a invoca metoda clasei curente

Puteți invoca metoda clasei curente folosind cuvântul cheie this. Dacă nu utilizați cuvântul cheie this, compilatorul adaugă automat acest cuvânt cheie în timp ce invocă metoda. Să vedem exemplul

 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(); }} 
Testează-l acum

Ieșire:

 hello n hello m 

3) this() : pentru a invoca constructorul de clasă curent

Apelul constructorului this() poate fi folosit pentru a invoca constructorul de clasă curent. Este folosit pentru a reutiliza constructorul. Cu alte cuvinte, este folosit pentru înlănțuirea constructorului.

Apelarea constructorului implicit din constructorul parametrizat:

 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); }} 
Testează-l acum

Ieșire:

 hello a 10 

Apelarea constructorului parametrizat din constructorul implicit:

 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(); }} 
Testează-l acum

Ieșire:

 5 hello a 

Utilizarea reală a apelului de constructor this().

Apelul constructorului this() ar trebui folosit pentru a reutiliza constructorul din constructor. Menține lanțul dintre constructori, adică este folosit pentru înlănțuirea constructorilor. Să vedem exemplul de mai jos care afișează utilizarea efectivă a acestui cuvânt cheie.

procesul Android acore continuă să se oprească
 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(); }} 
Testează-l acum

Ieșire:

 111 ankit java 0.0 112 sumit java 6000.0 

Regulă: Apelul la this() trebuie să fie prima instrucțiune din constructor.

 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(); }} 
Testează-l acum

Ieșire:

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

4) aceasta: a trece drept argument în metodă

Cuvântul cheie this poate fi transmis și ca argument în metodă. Este folosit în principal în gestionarea evenimentelor. Să vedem exemplul:

 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(); } } 
Testează-l acum

Ieșire:

 method is invoked 

Aplicarea acestui lucru care poate fi trecută ca argument:

În gestionarea evenimentelor (sau) într-o situație în care trebuie să furnizăm referință a unei clase la alta. Este folosit pentru a reutiliza un obiect în mai multe metode.


5) aceasta: a trece ca argument în apelul constructorului

Putem trece și cuvântul cheie this în constructor. Este util dacă trebuie să folosim un obiect în mai multe clase. Să vedem exemplul:

organizarea si arhitectura calculatoarelor
 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(); } } 
Testează-l acum
 Output:10 

6) acest cuvânt cheie poate fi folosit pentru a returna instanța curentă a clasei

Putem returna acest cuvânt cheie ca instrucțiune din metodă. În acest caz, tipul returnat al metodei trebuie să fie tipul clasei (non-primitive). Să vedem exemplul:

Sintaxa acestuia care poate fi returnată ca instrucțiune

 return_type method_name(){ return this; } 

Exemplu al acestui cuvânt cheie pe care îl returnați ca instrucțiune din metodă

 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(); } } 
Testează-l acum

Ieșire:

 Hello java 

Demonstrarea acestui cuvânt cheie

Să demonstrăm că acest cuvânt cheie se referă la variabila de instanță a clasei curente. În acest program, tipărim variabila de referință și aceasta, ieșirea ambelor variabile este aceeași.

 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(); } } 
Testează-l acum

Ieșire:

 A5@22b3ea59 A5@22b3ea59