Pode haver muito uso de Java esta palavra-chave . Em Java, este é um variável de referência que se refere ao objeto atual.
Uso de Java esta palavra-chave
Aqui é fornecido o 6 uso de java esta palavra-chave.
- isso pode ser usado para se referir à variável de instância da classe atual.
- isso pode ser usado para invocar o método da classe atual (implicitamente)
- this() pode ser usado para invocar o construtor da classe atual.
- isso pode ser passado como um argumento na chamada do método.
- isso pode ser passado como argumento na chamada do construtor.
- 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.
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