logo

šis raktinis žodis Java

Naudoti galima labai daug Java šį raktinį žodį . Java programoje tai yra a atskaitos kintamasis kuri nurodo esamą objektą.

java šį raktinį žodį

Šio raktinio žodžio Java naudojimas

Čia pateikiamas 6 šio raktinio žodžio Java naudojimas.

  1. tai gali būti naudojama norint nurodyti esamą klasės egzempliorių kintamąjį.
  2. tai gali būti naudojama dabartinės klasės metodui iškviesti (netiesiogiai)
  3. this() gali būti naudojamas dabartiniam klasės konstruktoriui iškviesti.
  4. tai galima perduoti kaip argumentą metodo iškvietime.
  5. tai galima perduoti kaip argumentą konstruktoriaus iškvietime.
  6. tai gali būti naudojama norint grąžinti dabartinį klasės egzempliorių iš metodo.

Pasiūlymas: Jei esate pradedantysis naudoti Java, ieškokite tik trijų šio raktinio žodžio naudojimo būdų.

Šio raktinio žodžio Java naudojimas

1) tai: nurodyti dabartinės klasės egzemplioriaus kintamąjį

Šis raktinis žodis gali būti naudojamas dabartiniam klasės egzemplioriaus kintamajam nurodyti. Jei tarp egzempliorių kintamųjų ir parametrų yra neaiškumų, šis raktinis žodis išsprendžia dviprasmiškumo problemą.

Problemos supratimas be šio raktinio žodžio

Supraskime problemą, jei nenaudosime šio raktinio žodžio pagal toliau pateiktą pavyzdį:

linkedlist ir arraylist
 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(); }} 
Išbandykite dabar

Išvestis:

 0 null 0.0 0 null 0.0 

Aukščiau pateiktame pavyzdyje parametrai (formalūs argumentai) ir egzempliorių kintamieji yra vienodi. Taigi, mes naudojame šį raktinį žodį, kad atskirtume vietinį kintamąjį ir egzemplioriaus kintamąjį.

Aukščiau pateiktos problemos sprendimas šiuo raktiniu žodžiu

 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(); }} 
Išbandykite dabar

Išvestis:

 111 ankit 5000.0 112 sumit 6000.0 

Jei vietiniai kintamieji (formalūs argumentai) ir egzempliorių kintamieji skiriasi, šio raktinio žodžio naudoti nereikia, kaip šioje programoje:

Programa, kur šis raktinis žodis nereikalingas

 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(); }} 
Išbandykite dabar

Išvestis:

 111 ankit 5000.0 112 sumit 6000.0 

Geriau naudoti prasmingus kintamųjų pavadinimus. Taigi mes naudojame tą patį pavadinimą, pavyzdžiui, kintamiesiems ir parametrams realiuoju laiku, ir visada naudojame šį raktinį žodį.


2) tai: iškviesti dabartinės klasės metodą

Galite iškviesti dabartinės klasės metodą naudodami šį raktinį žodį. Jei nenaudojate šio raktinio žodžio, kompiliatorius automatiškai prideda šį raktinį žodį, iškviesdamas metodą. Pažiūrėkime pavyzdį

 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(); }} 
Išbandykite dabar

Išvestis:

 hello n hello m 

3) this() : iškviesti esamą klasės konstruktorių

Šis() konstruktoriaus iškvietimas gali būti naudojamas dabartiniam klasės konstruktoriui iškviesti. Jis naudojamas pakartotiniam konstruktoriaus panaudojimui. Kitaip tariant, jis naudojamas konstruktoriaus grandininimui.

kompiuterių tinklai

Iškviečiamas numatytasis konstruktorius iš parametruoto konstruktoriaus:

 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); }} 
Išbandykite dabar

Išvestis:

 hello a 10 

Iškviečiamas parametrizuotas konstruktorius iš numatytojo konstruktoriaus:

 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(); }} 
Išbandykite dabar

Išvestis:

 5 hello a 

Realus šio() konstruktoriaus iškvietimo naudojimas

Šis() konstruktoriaus iškvietimas turėtų būti naudojamas pakartotinai naudoti konstruktorių iš konstruktoriaus. Jis palaiko grandinę tarp konstruktorių, ty naudojamas konstruktorių grandininimui. Pažiūrėkime toliau pateiktą pavyzdį, kuriame parodytas tikrasis šio raktinio žodžio naudojimas.

 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(); }} 
Išbandykite dabar

Išvestis:

mesti java išimties tvarkymą
 111 ankit java 0.0 112 sumit java 6000.0 

Taisyklė: Call to this() turi būti pirmasis konstruktoriaus sakinys.

 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(); }} 
Išbandykite dabar

Išvestis:

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

4) tai: perduoti kaip metodo argumentą

Šis raktinis žodis taip pat gali būti perduodamas kaip metodo argumentas. Jis daugiausia naudojamas renginių valdymui. Pažiūrėkime pavyzdį:

 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(); } } 
Išbandykite dabar

Išvestis:

 method is invoked 

To taikymas, kuris gali būti priimtas kaip argumentas:

Apdorojant įvykius (arba) situacijoje, kai turime pateikti vienos klasės nuorodą į kitą. Jis naudojamas pakartotinai naudoti vieną objektą daugeliu metodų.


5) tai: perduoti kaip argumentą konstruktoriaus iškvietime

Šį raktinį žodį galime perduoti ir konstruktoriuje. Tai naudinga, jei turime naudoti vieną objektą keliose klasėse. Pažiūrėkime pavyzdį:

kas yra java hashmap
 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(); } } 
Išbandykite dabar
 Output:10 

6) šis raktinis žodis gali būti naudojamas norint grąžinti esamą klasės egzempliorių

Šį raktinį žodį galime grąžinti kaip metodo teiginį. Tokiu atveju metodo grąžinimo tipas turi būti klasės tipas (neprimityvus). Pažiūrėkime pavyzdį:

To sintaksė, kurią galima grąžinti kaip teiginį

 return_type method_name(){ return this; } 

Šio raktinio žodžio, kurį pateikiate kaip teiginį iš metodo, pavyzdys

 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(); } } 
Išbandykite dabar

Išvestis:

 Hello java 

Įrodantis šį raktinį žodį

Įrodykime, kad šis raktinis žodis nurodo esamą klasės egzemplioriaus kintamąjį. Šioje programoje mes spausdiname atskaitos kintamąjį ir tai, abiejų kintamųjų išvestis yra vienoda.

 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(); } } 
Išbandykite dabar

Išvestis:

 A5@22b3ea59 A5@22b3ea59