logo

to słowo kluczowe w Javie

Można z nich wiele skorzystać Java to słowo kluczowe . W Javie jest to zmienna referencyjna który odnosi się do bieżącego obiektu.

Java to słowo kluczowe

Użycie tego słowa kluczowego w Javie

Tutaj podano 6 zastosowań tego słowa kluczowego w Javie.

  1. można tego użyć do odniesienia się do zmiennej instancji bieżącej klasy.
  2. można tego użyć do wywołania metody bieżącej klasy (domyślnie)
  3. this() może zostać użyte do wywołania konstruktora bieżącej klasy.
  4. można to przekazać jako argument w wywołaniu metody.
  5. można to przekazać jako argument w wywołaniu konstruktora.
  6. można tego użyć do zwrócenia bieżącej instancji klasy z metody.

Sugestia: Jeśli dopiero zaczynasz przygodę z Javą, wyszukaj tylko trzy zastosowania tego słowa kluczowego.

Użycie tego słowa kluczowego w Javie

1) to: odwołanie się do zmiennej instancji bieżącej klasy

Słowo kluczowe this może być użyte do odniesienia się do zmiennej instancji bieżącej klasy. Jeśli istnieje niejednoznaczność pomiędzy zmiennymi instancji i parametrami, to słowo kluczowe rozwiązuje problem niejednoznaczności.

Zrozumienie problemu bez tego słowa kluczowego

Rozumiemy problem, jeśli nie użyjemy tego słowa kluczowego na przykładzie podanym poniżej:

Pasek narzędzi szybkiego dostępu ms word
 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(); }} 
Przetestuj teraz

Wyjście:

 0 null 0.0 0 null 0.0 

W powyższym przykładzie parametry (argumenty formalne) i zmienne instancji są takie same. Dlatego używamy tego słowa kluczowego, aby rozróżnić zmienną lokalną od zmiennej instancji.

Rozwiązanie powyższego problemu za pomocą tego słowa kluczowego

 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(); }} 
Przetestuj teraz

Wyjście:

 111 ankit 5000.0 112 sumit 6000.0 

Jeśli zmienne lokalne (argumenty formalne) i zmienne instancji są różne, nie ma potrzeby używania tego słowa kluczowego jak w poniższym programie:

Program, w którym to słowo kluczowe nie jest wymagane

 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(); }} 
Przetestuj teraz

Wyjście:

 111 ankit 5000.0 112 sumit 6000.0 

Lepszym rozwiązaniem jest używanie znaczących nazw zmiennych. Dlatego używamy tej samej nazwy na przykład zmiennych i parametrów w czasie rzeczywistym i zawsze używamy tego słowa kluczowego.


2) to: aby wywołać metodę bieżącej klasy

Możesz wywołać metodę bieżącej klasy, używając słowa kluczowego this. Jeśli nie użyjesz tego słowa kluczowego, kompilator automatycznie doda to słowo kluczowe podczas wywoływania metody. Zobaczmy przykład

 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(); }} 
Przetestuj teraz

Wyjście:

urodził się Freddie Mercury
 hello n hello m 

3) this() : aby wywołać konstruktor bieżącej klasy

Wywołanie konstruktora this() może zostać użyte do wywołania konstruktora bieżącej klasy. Służy do ponownego użycia konstruktora. Innymi słowy, służy do łączenia konstruktorów.

Wywołanie domyślnego konstruktora z sparametryzowanego 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); }} 
Przetestuj teraz

Wyjście:

 hello a 10 

Wywołanie sparametryzowanego konstruktora z konstruktora domyślnego:

Java dodając do tablicy
 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(); }} 
Przetestuj teraz

Wyjście:

 5 hello a 

Rzeczywiste użycie wywołania konstruktora this().

Aby ponownie użyć konstruktora z konstruktora, należy użyć wywołania konstruktora this(). Utrzymuje łańcuch pomiędzy konstruktorami, tj. służy do łączenia konstruktorów. Zobaczmy poniższy przykład ilustrujący faktyczne użycie tego słowa kluczowego.

 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(); }} 
Przetestuj teraz

Wyjście:

 111 ankit java 0.0 112 sumit java 6000.0 

Reguła: Wywołanie this() musi być pierwszą instrukcją w konstruktorze.

 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(); }} 
Przetestuj teraz

Wyjście:

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

4) to: przekazać jako argument metody

Słowo kluczowe this można także przekazać jako argument metody. Stosowany jest głównie w obsłudze zdarzeń. Zobaczmy przykład:

 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(); } } 
Przetestuj teraz

Wyjście:

 method is invoked 

Zastosowanie tego, które można przekazać jako argument:

Przy obsłudze zdarzeń (lub) w sytuacji, gdy musimy podać referencję klasy do innej. Służy do ponownego wykorzystania jednego obiektu w wielu metodach.


5) to: przekazać jako argument w wywołaniu konstruktora

Słowo kluczowe this możemy również przekazać do konstruktora. Przydaje się, jeśli musimy użyć jednego obiektu w wielu klasach. Zobaczmy przykład:

połączona lista
 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(); } } 
Przetestuj teraz
 Output:10 

6) tego słowa kluczowego można użyć do zwrócenia bieżącej instancji klasy

Możemy zwrócić to słowo kluczowe jako instrukcję metody. W takim przypadku zwracanym typem metody musi być typ klasowy (nieprymitywny). Zobaczmy przykład:

Składnia tego, która może zostać zwrócona jako instrukcja

 return_type method_name(){ return this; } 

Przykład tego słowa kluczowego zwracanego jako instrukcja metody

 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(); } } 
Przetestuj teraz

Wyjście:

 Hello java 

Udowodnienie tego słowa kluczowego

Udowodnimy, że to słowo kluczowe odnosi się do zmiennej instancji bieżącej klasy. W tym programie drukujemy zmienną referencyjną i wynik obu zmiennych jest taki sam.

 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(); } } 
Przetestuj teraz

Wyjście:

 A5@22b3ea59 A5@22b3ea59