Можна використовувати багато Java це ключове слово . У Java це a еталонна змінна який посилається на поточний об’єкт.
Використання Java це ключове слово
Тут наведено 6 використання цього ключового слова java.
- це можна використовувати для посилання на поточну змінну екземпляра класу.
- це можна використовувати для виклику поточного методу класу (неявно)
- this() можна використовувати для виклику поточного конструктора класу.
- це можна передати як аргумент у виклику методу.
- це можна передати як аргумент у виклику конструктора.
- це можна використовувати для повернення поточного екземпляра класу з методу.
Пропозиція: Якщо ви новачок у Java, знайдіть лише три варіанти використання цього ключового слова.
1) це: посилатися на змінну примірника поточного класу
Ключове слово this можна використовувати для посилання на змінну примірника поточного класу. Якщо існує неоднозначність між змінними екземпляра та параметрами, це ключове слово вирішує проблему неоднозначності.
Розуміння проблеми без цього ключового слова
Давайте розберемося з проблемою, якщо ми не використовуємо це ключове слово, на прикладі, наведеному нижче:
апурва падгаонкар
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(); }}Перевірте зараз
Вихід:
0 null 0.0 0 null 0.0
У наведеному вище прикладі параметри (формальні аргументи) і змінні екземпляра однакові. Отже, ми використовуємо це ключове слово, щоб розрізняти локальну змінну та змінну екземпляра.
Рішення вищевказаної задачі за цим ключовим словом
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(); }}Перевірте зараз
Вихід:
111 ankit 5000.0 112 sumit 6000.0
Якщо локальні змінні (формальні аргументи) і змінні екземплярів відрізняються, немає потреби використовувати це ключове слово, як у наступній програмі:
сортування масиву Java
Програма, де це ключове слово не є обов’язковим
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(); }}Перевірте зараз
Вихід:
111 ankit 5000.0 112 sumit 6000.0
Кращим підходом є використання значущих імен для змінних. Тому ми використовуємо однакові назви для змінних і параметрів екземпляра в реальному часі та завжди використовуємо це ключове слово.
2) це: для виклику поточного методу класу
Ви можете викликати метод поточного класу за допомогою ключового слова this. Якщо ви не використовуєте ключове слово this, компілятор автоматично додає це ключове слово під час виклику методу. Давайте подивимося на прикладі
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(); }}Перевірте зараз
Вихід:
hello n hello m
3) this() : для виклику поточного конструктора класу
Виклик конструктора this() можна використовувати для виклику поточного конструктора класу. Він використовується для повторного використання конструктора. Іншими словами, він використовується для ланцюжка конструкторів.
Виклик конструктора за замовчуванням із параметризованого конструктора:
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); }}Перевірте зараз
Вихід:
hello a 10
Виклик параметризованого конструктора з конструктора за замовчуванням:
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(); }}Перевірте зараз
Вихід:
5 hello a
Реальне використання виклику конструктора this().
Виклик конструктора this() слід використовувати для повторного використання конструктора з конструктора. Він підтримує ланцюжок між конструкторами, тобто використовується для з’єднання конструкторів. Давайте розглянемо наведений нижче приклад, який демонструє фактичне використання цього ключового слова.
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(); }}Перевірте зараз
Вихід:
111 ankit java 0.0 112 sumit java 6000.0
Правило: виклик this() має бути першим оператором у конструкторі.
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(); }}Перевірте зараз
Вихід:
Compile Time Error: Call to this must be first statement in constructor
4) це: передати як аргумент у методі
Ключове слово this також можна передати як аргумент у методі. В основному використовується для обробки подій. Давайте розглянемо приклад:
масив рядків c
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(); } }Перевірте зараз
Вихід:
method is invoked
Застосування цього, яке можна передати як аргумент:
При обробці подій (або) у ситуації, коли ми повинні надати посилання класу на інший. Він використовується для повторного використання одного об'єкта в багатьох методах.
5) це: передати як аргумент у виклику конструктора
Ми також можемо передати це ключове слово в конструктор. Це корисно, якщо нам потрібно використовувати один об’єкт у кількох класах. Давайте розглянемо приклад:
сонячний деол вік
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(); } }Перевірте зараз
Output:10
6) це ключове слово можна використовувати для повернення поточного екземпляра класу
Ми можемо повернути це ключове слово як оператор із методу. У такому випадку тип повернення методу має бути типом класу (непримітивним). Давайте розглянемо приклад:
Синтаксис this, який можна повернути як оператор
return_type method_name(){ return this; }
Приклад цього ключового слова, яке ви повертаєте як оператор із методу
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(); } }Перевірте зараз
Вихід:
Hello java
Підтвердження цього ключового слова
Доведемо, що це ключове слово відноситься до поточної змінної екземпляра класу. У цій програмі ми друкуємо довідкову змінну, а вивід обох змінних однаковий.
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(); } }Перевірте зараз
Вихід:
A5@22b3ea59 A5@22b3ea59