logo

esta palabra clave en Java

Puede haber mucho uso de Java esta palabra clave . En Java, esto es un variable de referencia que se refiere al objeto actual.

java esta palabra clave

Uso de Java esta palabra clave

Aquí se dan los 6 usos de java, esta palabra clave.

  1. esto se puede utilizar para hacer referencia a la variable de instancia de la clase actual.
  2. esto se puede usar para invocar el método de clase actual (implícitamente)
  3. this() se puede utilizar para invocar el constructor de clase actual.
  4. esto se puede pasar como argumento en la llamada al método.
  5. esto se puede pasar como argumento en la llamada al constructor.
  6. esto se puede usar para devolver la instancia de clase actual del método.

Sugerencia: Si es principiante en Java, busque solo tres usos de esta palabra clave.

Uso de Java esta palabra clave

1) esto: para hacer referencia a la variable de instancia de la clase actual

La palabra clave this se puede utilizar para hacer referencia a la variable de instancia de la clase actual. Si hay ambigüedad entre las variables de instancia y los parámetros, esta palabra clave resuelve el problema de ambigüedad.

Comprender el problema sin esta palabra clave

Entendamos el problema si no utilizamos esta palabra clave con el ejemplo que se muestra a continuación:

apurva padgaonkar
 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(); }} 
Pruébalo ahora

Producción:

 0 null 0.0 0 null 0.0 

En el ejemplo anterior, los parámetros (argumentos formales) y las variables de instancia son los mismos. Entonces, estamos usando esta palabra clave para distinguir la variable local y la variable de instancia.

Solución del problema anterior con esta palabra clave

 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(); }} 
Pruébalo ahora

Producción:

 111 ankit 5000.0 112 sumit 6000.0 

Si las variables locales (argumentos formales) y las variables de instancia son diferentes, no es necesario utilizar esta palabra clave como en el siguiente programa:

Programa donde no se requiere esta palabra clave

 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(); }} 
Pruébalo ahora

Producción:

 111 ankit 5000.0 112 sumit 6000.0 

Es mejor utilizar nombres significativos para las variables. Entonces usamos el mismo nombre, por ejemplo, variables y parámetros en tiempo real, y siempre usamos esta palabra clave.


2) esto: para invocar el método de clase actual

Puede invocar el método de la clase actual utilizando la palabra clave this. Si no utiliza la palabra clave this, el compilador agrega automáticamente esta palabra clave al invocar el método. veamos el ejemplo

desactivar el modo desarrollador
 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(); }} 
Pruébalo ahora

Producción:

 hello n hello m 

3) this() : para invocar el constructor de la clase actual

La llamada al constructor this() se puede utilizar para invocar el constructor de la clase actual. Se utiliza para reutilizar el constructor. En otras palabras, se utiliza para el encadenamiento de constructores.

Llamar al constructor predeterminado desde el constructor parametrizado:

 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); }} 
Pruébalo ahora

Producción:

 hello a 10 

Llamar al constructor parametrizado desde el constructor predeterminado:

 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(); }} 
Pruébalo ahora

Producción:

 5 hello a 

Uso real de la llamada al constructor this()

La llamada al constructor this() debe usarse para reutilizar el constructor del constructor. Mantiene la cadena entre los constructores, es decir, se utiliza para el encadenamiento de constructores. Veamos el ejemplo a continuación que muestra el uso real de esta palabra clave.

 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(); }} 
Pruébalo ahora

Producción:

 111 ankit java 0.0 112 sumit java 6000.0 

Regla: la llamada a this() debe ser la primera declaración en el constructor.

 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(); }} 
Pruébalo ahora

Producción:

cadena comparable en java
 Compile Time Error: Call to this must be first statement in constructor 

4) esto: para pasar como argumento en el método

La palabra clave this también se puede pasar como argumento en el método. Se utiliza principalmente en el manejo de eventos. Veamos el ejemplo:

 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(); } } 
Pruébalo ahora

Producción:

 method is invoked 

Aplicación de esto que se puede pasar como argumento:

En el manejo de eventos (o) en una situación en la que tenemos que proporcionar una referencia de una clase a otra. Se utiliza para reutilizar un objeto en muchos métodos.


5) esto: pasar como argumento en la llamada al constructor

También podemos pasar la palabra clave this en el constructor. Es útil si tenemos que usar un objeto en varias clases. Veamos el ejemplo:

expresión regular java
 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(); } } 
Pruébalo ahora
 Output:10 

6) esta palabra clave se puede utilizar para devolver la instancia de clase actual

Podemos devolver esta palabra clave como una declaración del método. En tal caso, el tipo de retorno del método debe ser el tipo de clase (no primitiva). Veamos el ejemplo:

Sintaxis de this que se puede devolver como una declaración

 return_type method_name(){ return this; } 

Ejemplo de esta palabra clave que devuelve como declaración del método

 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(); } } 
Pruébalo ahora

Producción:

 Hello java 

Probando esta palabra clave

Demostremos que esta palabra clave se refiere a la variable de instancia de la clase actual. En este programa, estamos imprimiendo la variable de referencia y la salida de ambas variables es la misma.

 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(); } } 
Pruébalo ahora

Producción:

 A5@22b3ea59 A5@22b3ea59