logo

esta palavra-chave em Java

Pode haver muito uso de Java esta palavra-chave . Em Java, este é um variável de referência que se refere ao objeto atual.

java esta palavra-chave

Uso de Java esta palavra-chave

Aqui é fornecido o 6 uso de java esta palavra-chave.

  1. isso pode ser usado para se referir à variável de instância da classe atual.
  2. isso pode ser usado para invocar o método da classe atual (implicitamente)
  3. this() pode ser usado para invocar o construtor da classe atual.
  4. isso pode ser passado como um argumento na chamada do método.
  5. isso pode ser passado como argumento na chamada do construtor.
  6. isso pode ser usado para retornar a instância da classe atual do método.

Sugestão: Se você é iniciante em Java, pesquise apenas três usos dessa palavra-chave.

Uso de Java esta palavra-chave

1) isto: para referir a variável de instância da classe atual

A palavra-chave this pode ser usada para se referir à variável de instância da classe atual. Se houver ambiguidade entre as variáveis ​​​​e os parâmetros da instância, esta palavra-chave resolve o problema de ambiguidade.

Entendendo o problema sem esta palavra-chave

Vamos entender o problema se não usarmos esta palavra-chave pelo exemplo abaixo:

string java de concatenação
 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(); }} 
Teste agora

Saída:

 0 null 0.0 0 null 0.0 

No exemplo acima, os parâmetros (argumentos formais) e as variáveis ​​​​de instância são iguais. Portanto, estamos usando esta palavra-chave para distinguir variável local e variável de instância.

Solução do problema acima por esta palavra-chave

 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(); }} 
Teste agora

Saída:

 111 ankit 5000.0 112 sumit 6000.0 

Se variáveis ​​locais (argumentos formais) e variáveis ​​de instância forem diferentes, não há necessidade de usar esta palavra-chave como no programa a seguir:

Programa onde esta palavra-chave não é necessária

 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(); }} 
Teste agora

Saída:

 111 ankit 5000.0 112 sumit 6000.0 

É uma abordagem melhor usar nomes significativos para variáveis. Portanto, usamos o mesmo nome para variáveis ​​​​e parâmetros de instância em tempo real e sempre usamos esta palavra-chave.


2) isto: para invocar o método da classe atual

Você pode invocar o método da classe atual usando a palavra-chave this. Se você não usar a palavra-chave this, o compilador adicionará automaticamente esta palavra-chave ao invocar o método. Vamos ver o exemplo

 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(); }} 
Teste agora

Saída:

ciclos java
 hello n hello m 

3) this(): para invocar o construtor da classe atual

A chamada do construtor this() pode ser usada para invocar o construtor da classe atual. É usado para reutilizar o construtor. Em outras palavras, é usado para encadeamento de construtores.

Chamando o construtor padrão do construtor 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); }} 
Teste agora

Saída:

 hello a 10 

Chamando o construtor parametrizado do construtor padrão:

convenções de nomenclatura java
 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(); }} 
Teste agora

Saída:

 5 hello a 

Uso real da chamada do construtor this()

A chamada do construtor this() deve ser usada para reutilizar o construtor do construtor. Ele mantém a cadeia entre os construtores, ou seja, é usado para encadeamento de construtores. Vejamos o exemplo abaixo que mostra o uso real desta palavra-chave.

 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(); }} 
Teste agora

Saída:

 111 ankit java 0.0 112 sumit java 6000.0 

Regra: A chamada para this() deve ser a primeira instrução no construtor.

 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(); }} 
Teste agora

Saída:

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

4) isto: passar como argumento no método

A palavra-chave this também pode ser passada como argumento no método. É usado principalmente no tratamento de eventos. Vejamos o exemplo:

 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(); } } 
Teste agora

Saída:

 method is invoked 

Aplicação disso que pode ser passado como argumento:

No tratamento de eventos (ou) em uma situação onde temos que fornecer referência de uma classe para outra. É usado para reutilizar um objeto em vários métodos.


5) isto: passar como argumento na chamada do construtor

Também podemos passar a palavra-chave this no construtor. É útil se tivermos que usar um objeto em múltiplas classes. Vejamos o exemplo:

classificar pilha
 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(); } } 
Teste agora
 Output:10 

6) esta palavra-chave pode ser usada para retornar a instância da classe atual

Podemos retornar esta palavra-chave como uma instrução do método. Nesse caso, o tipo de retorno do método deve ser o tipo de classe (não primitivo). Vejamos o exemplo:

Sintaxe disso que pode ser retornada como uma instrução

 return_type method_name(){ return this; } 

Exemplo desta palavra-chave que você retorna como uma instrução do 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(); } } 
Teste agora

Saída:

 Hello java 

Provando esta palavra-chave

Vamos provar que esta palavra-chave se refere à variável de instância da classe atual. Neste programa, estamos imprimindo a variável de referência e isso, a saída de ambas as variáveis ​​é a mesma.

 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(); } } 
Teste agora

Saída:

 A5@22b3ea59 A5@22b3ea59