logo

toto kľúčové slovo v jazyku Java

Môže byť veľa využitia Java toto kľúčové slovo . V Jave je to a referenčná premenná ktorý odkazuje na aktuálny objekt.

java toto kľúčové slovo

Toto kľúčové slovo používa Java

Tu je uvedené 6 použitia java tohto kľúčového slova.

  1. toto možno použiť na odkazovanie aktuálnej premennej inštancie triedy.
  2. toto možno použiť na vyvolanie aktuálnej metódy triedy (implicitne)
  3. this() možno použiť na vyvolanie konštruktora aktuálnej triedy.
  4. toto môže byť odovzdané ako argument vo volaní metódy.
  5. toto možno odovzdať ako argument vo volaní konštruktora.
  6. toto možno použiť na vrátenie aktuálnej inštancie triedy z metódy.

Návrh: Ak ste začiatočník v jazyku Java, vyhľadajte iba tri použitia tohto kľúčového slova.

Toto kľúčové slovo používa Java

1) toto: odkazovať na aktuálnu premennú inštancie triedy

Kľúčové slovo this možno použiť na odkazovanie na aktuálnu premennú inštancie triedy. Ak existuje nejednoznačnosť medzi premennými inštancie a parametrami, toto kľúčové slovo rieši problém nejednoznačnosti.

Pochopenie problému bez tohto kľúčového slova

Ak toto kľúčové slovo nepoužijeme, pochopme problém podľa príkladu uvedeného nižšie:

prime žiadny kód v jave
 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(); }} 
Vyskúšajte to

Výkon:

 0 null 0.0 0 null 0.0 

Vo vyššie uvedenom príklade sú parametre (formálne argumenty) a premenné inštancie rovnaké. Toto kľúčové slovo teda používame na rozlíšenie lokálnej premennej a premennej inštancie.

Riešenie vyššie uvedeného problému pomocou tohto kľúčového slova

 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(); }} 
Vyskúšajte to

Výkon:

 111 ankit 5000.0 112 sumit 6000.0 

Ak sa lokálne premenné (formálne argumenty) a premenné inštancie líšia, nie je potrebné použiť toto kľúčové slovo ako v nasledujúcom programe:

Program, kde sa toto kľúčové slovo nevyžaduje

 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(); }} 
Vyskúšajte to

Výkon:

 111 ankit 5000.0 112 sumit 6000.0 

Je lepší prístup používať pre premenné zmysluplné názvy. Preto používame rovnaký názov pre napríklad premenné a parametre v reálnom čase a vždy používame toto kľúčové slovo.


2) toto: na vyvolanie metódy aktuálnej triedy

Metódu aktuálnej triedy môžete vyvolať pomocou kľúčového slova this. Ak nepoužijete kľúčové slovo this, kompilátor toto kľúčové slovo automaticky pridá pri vyvolaní metódy. Pozrime sa na príklad

pridať reťazec 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(); }} 
Vyskúšajte to

Výkon:

 hello n hello m 

3) this(): na vyvolanie konštruktora aktuálnej triedy

Volanie konštruktora this() možno použiť na vyvolanie konštruktora aktuálnej triedy. Používa sa na opätovné použitie konštruktora. Inými slovami, používa sa na reťazenie konštruktorov.

Volanie predvoleného konštruktora z parametrizovaného konštruktora:

 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); }} 
Vyskúšajte to

Výkon:

 hello a 10 

Volanie parametrizovaného konštruktora z predvoleného konštruktora:

 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(); }} 
Vyskúšajte to

Výkon:

 5 hello a 

Skutočné použitie tohto () volania konštruktora

Volanie konštruktora this() by sa malo použiť na opätovné použitie konštruktora z konštruktora. Udržuje reťazec medzi konštruktormi, tj používa sa na reťazenie konštruktorov. Pozrime sa na príklad uvedený nižšie, ktorý zobrazuje skutočné použitie tohto kľúčového slova.

 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(); }} 
Vyskúšajte to

Výkon:

 111 ankit java 0.0 112 sumit java 6000.0 

Pravidlo: Volanie this() musí byť prvým príkazom v konštruktore.

 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(); }} 
Vyskúšajte to

Výkon:

je kat timpf právnička
 Compile Time Error: Call to this must be first statement in constructor 

4) toto: prejsť ako argument v metóde

Kľúčové slovo this môže byť tiež odovzdané ako argument v metóde. Používa sa hlavne pri manipulácii s udalosťami. Pozrime sa na príklad:

 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(); } } 
Vyskúšajte to

Výkon:

 method is invoked 

Použitie tohto, ktoré možno odovzdať ako argument:

Pri manipulácii s udalosťami (alebo) v situácii, keď musíme poskytnúť referenciu triedy na inú. Používa sa na opätovné použitie jedného objektu v mnohých metódach.


5) toto: prejsť ako argument vo volaní konštruktora

Kľúčové slovo this môžeme odovzdať aj do konštruktora. Je to užitočné, ak musíme jeden objekt použiť vo viacerých triedach. Pozrime sa na príklad:

obsadenie v sql
 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(); } } 
Vyskúšajte to
 Output:10 

6) toto kľúčové slovo možno použiť na vrátenie aktuálnej inštancie triedy

Toto kľúčové slovo môžeme vrátiť ako príkaz z metódy. V takom prípade musí byť návratový typ metódy typ triedy (neprimitívny). Pozrime sa na príklad:

Syntax tohto, ktorú možno vrátiť ako príkaz

 return_type method_name(){ return this; } 

Príklad tohto kľúčového slova, ktoré vrátite ako príkaz z metódy

 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(); } } 
Vyskúšajte to

Výkon:

 Hello java 

Potvrdenie tohto kľúčového slova

Ukážme, že toto kľúčové slovo odkazuje na aktuálnu premennú inštancie triedy. V tomto programe tlačíme referenčnú premennú a to, výstup oboch premenných je rovnaký.

 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(); } } 
Vyskúšajte to

Výkon:

 A5@22b3ea59 A5@22b3ea59