logo

Java'daki bu anahtar kelime

Çok fazla kullanım olabilir Bu anahtar kelimeyi Java . Java'da bu bir referans değişkeni bu geçerli nesneyi ifade eder.

bu anahtar kelimeyi java

Bu anahtar kelimenin Java kullanımı

Burada Java'nın bu anahtar sözcüğünün 6 kullanımı verilmiştir.

  1. bu geçerli sınıf örnek değişkenine atıfta bulunmak için kullanılabilir.
  2. bu mevcut sınıf yöntemini çağırmak için kullanılabilir (örtük olarak)
  3. this() geçerli sınıf yapıcısını çağırmak için kullanılabilir.
  4. bu, yöntem çağrısında bir argüman olarak iletilebilir.
  5. bu, yapıcı çağrısında argüman olarak iletilebilir.
  6. bu, geçerli sınıf örneğini yöntemden döndürmek için kullanılabilir.

Telkin: Java'ya yeni başlıyorsanız, bu anahtar kelimenin yalnızca üç kullanımına bakın.

Bu anahtar kelimenin Java kullanımı

1) bu: geçerli sınıf örneği değişkenine atıfta bulunmak için

This anahtar sözcüğü geçerli sınıf örneği değişkenine atıfta bulunmak için kullanılabilir. Örnek değişkenler ve parametreler arasında belirsizlik varsa, bu anahtar kelime belirsizlik sorununu çözer.

Bu anahtar kelime olmadan sorunu anlamak

Bu anahtar kelimeyi aşağıda verilen örnekle kullanmazsak sorunu anlayalım:

klavyeye ekle
 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(); }} 
Şimdi Test Edin

Çıktı:

 0 null 0.0 0 null 0.0 

Yukarıdaki örnekte parametreler (resmi argümanlar) ve örnek değişkenler aynıdır. Dolayısıyla, yerel değişken ile örnek değişkeni ayırt etmek için bu anahtar kelimeyi kullanıyoruz.

Yukarıdaki sorunun bu anahtar kelimeyle çözümü

 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(); }} 
Şimdi Test Edin

Çıktı:

java karşılaştırması
 111 ankit 5000.0 112 sumit 6000.0 

Yerel değişkenler (resmi argümanlar) ve örnek değişkenler farklıysa, bu anahtar sözcüğü aşağıdaki programdaki gibi kullanmaya gerek yoktur:

Bu anahtar kelimenin gerekli olmadığı program

 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(); }} 
Şimdi Test Edin

Çıktı:

 111 ankit 5000.0 112 sumit 6000.0 

Değişkenler için anlamlı isimler kullanmak daha doğru bir yaklaşımdır. Bu nedenle, örnek değişkenler ve parametreler için gerçek zamanlı olarak aynı adı kullanırız ve her zaman bu anahtar kelimeyi kullanırız.


2) bu: mevcut sınıf yöntemini çağırmak için

This anahtar sözcüğünü kullanarak geçerli sınıfın yöntemini çağırabilirsiniz. This anahtar sözcüğünü kullanmazsanız, derleyici yöntemi çağırırken bu anahtar sözcüğü otomatik olarak ekler. Örneği görelim

 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(); }} 
Şimdi Test Edin

Çıktı:

 hello n hello m 

3) this() : geçerli sınıf yapıcısını çağırmak için

this() yapıcı çağrısı, geçerli sınıf yapıcısını çağırmak için kullanılabilir. Yapıcıyı yeniden kullanmak için kullanılır. Başka bir deyişle yapıcı zincirleme için kullanılır.

Parametreli kurucudan varsayılan kurucuyu çağırmak:

 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); }} 
Şimdi Test Edin

Çıktı:

 hello a 10 

Parametreli kurucuyu varsayılan kurucudan çağırmak:

 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(); }} 
Şimdi Test Edin

Çıktı:

 5 hello a 

this() yapıcı çağrısının gerçek kullanımı

This() yapıcı çağrısı, yapıcının yapıcıdan yeniden kullanılması için kullanılmalıdır. Yapıcılar arasındaki zinciri korur, yani yapıcı zincirleme için kullanılır. Bu anahtar kelimenin gerçek kullanımını gösteren aşağıda verilen örneği görelim.

meşale kurulumu
 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(); }} 
Şimdi Test Edin

Çıktı:

 111 ankit java 0.0 112 sumit java 6000.0 

Kural: Buna() çağrısı yapıcıdaki ilk ifade olmalıdır.

 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(); }} 
Şimdi Test Edin

Çıktı:

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

4) bu: yöntemde argüman olarak geçmek

This anahtar sözcüğü aynı zamanda yöntemde argüman olarak da iletilebilir. Esas olarak olay işlemede kullanılır. Örneğe bakalım:

 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(); } } 
Şimdi Test Edin

Çıktı:

 method is invoked 

Bunun bir argüman olarak iletilebilecek uygulaması:

Olay işlemede (veya) bir sınıfın diğerine referansını vermemiz gereken bir durumda. Bir nesneyi birçok yöntemde yeniden kullanmak için kullanılır.


5) bu: yapıcı çağrısında argüman olarak iletmek için

This anahtar sözcüğünü yapıcıya da aktarabiliriz. Bir nesneyi birden fazla sınıfta kullanmak zorunda kalırsak faydalıdır. Örneğe bakalım:

c++ bölme dizesi
 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(); } } 
Şimdi Test Edin
 Output:10 

6) bu anahtar kelime mevcut sınıf örneğini döndürmek için kullanılabilir

Bu anahtar kelimeyi yöntemden bir ifade olarak döndürebiliriz. Bu durumda metodun dönüş tipinin sınıf tipi (ilkel olmayan) olması gerekmektedir. Örneğe bakalım:

Bunun bir ifade olarak döndürülebilecek sözdizimi

 return_type method_name(){ return this; } 

Yöntemden bir ifade olarak döndürdüğünüz bu anahtar kelimenin örneği

 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(); } } 
Şimdi Test Edin

Çıktı:

 Hello java 

Bu anahtar kelimeyi kanıtlamak

Bu anahtar kelimenin geçerli sınıf örneği değişkenine atıfta bulunduğunu kanıtlayalım. Bu programda referans değişkenini yazdırıyoruz ve bu, her iki değişkenin çıktısı aynı.

 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(); } } 
Şimdi Test Edin

Çıktı:

 A5@22b3ea59 A5@22b3ea59