Може се много користити Јава ову кључну реч . У Јави, ово је а референтна варијабла који се односи на тренутни објекат.
Употреба Јава ове кључне речи
Овде је дата 6 употреба јава ове кључне речи.
- ово се може користити за упућивање тренутне променљиве инстанце класе.
- ово се може користити за позивање методе тренутне класе (имплицитно)
- тхис() се може користити за позивање конструктора тренутне класе.
- ово се може пренети као аргумент у позиву методе.
- ово се може пренети као аргумент у позиву конструктора.
- ово се може користити за враћање тренутне инстанце класе из методе.
предлог: Ако сте почетник у Јави, потражите само три употребе ове кључне речи.
1) ово: да упућује тренутну променљиву инстанце класе
Ова кључна реч се може користити за упућивање тренутне променљиве инстанце класе. Ако постоји нејасноћа између променљивих инстанце и параметара, ова кључна реч решава проблем двосмислености.
Разумевање проблема без ове кључне речи
Хајде да разумемо проблем ако не користимо ову кључну реч на примеру датом у наставку:
стринг ти инт
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
Ако се локалне променљиве (формални аргументи) и променљиве инстанце разликују, нема потребе да користите ову кључну реч као у следећем програму:
Програм где ова кључна реч није потребна
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) ово: да позовете метод тренутне класе
Можете позвати методу тренутне класе користећи кључну реч тхис. Ако не користите кључну реч тхис, компајлер аутоматски додаје ову кључну реч док позива метод. Хајде да видимо пример
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) тхис() : за позивање конструктора тренутне класе
Позив конструктора тхис() може се користити за позивање тренутног конструктора класе. Користи се за поновну употребу конструктора. Другим речима, користи се за уланчавање конструктора.
Позивање подразумеваног конструктора из параметризованог конструктора:
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
Права употреба позива конструктора тхис().
Позив конструктора тхис() треба да се користи за поновно коришћење конструктора из конструктора. Одржава ланац између конструктора, односно користи се за уланчавање конструктора. Хајде да видимо пример дат у наставку који приказује стварну употребу ове кључне речи.
рачунарске мреже
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
Правило: Позив тхис() мора бити прва изјава у конструктору.
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) ово: да прође као аргумент у методу
Ова кључна реч се такође може пренети као аргумент у методу. Углавном се користи у руковању догађајима. Погледајмо пример:
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) ова кључна реч се може користити за враћање тренутне инстанце класе
Ову кључну реч можемо да вратимо као исказ из методе. У том случају, тип враћања методе мора бити тип класе (непримитиван). Погледајмо пример:
Синтакса овог који се може вратити као изјава
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