Ç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 kelimenin Java kullanımı
Burada Java'nın bu anahtar sözcüğünün 6 kullanımı verilmiştir.
- bu geçerli sınıf örnek değişkenine atıfta bulunmak için kullanılabilir.
- bu mevcut sınıf yöntemini çağırmak için kullanılabilir (örtük olarak)
- this() geçerli sınıf yapıcısını çağırmak için kullanılabilir.
- bu, yöntem çağrısında bir argüman olarak iletilebilir.
- bu, yapıcı çağrısında argüman olarak iletilebilir.
- 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.
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