Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Java esta palavra-chave

Java esta palavra-chave


Neste artigo, aprenderemos sobre essa palavra-chave em Java, como e onde usá-la com a ajuda de exemplos.

esta palavra-chave


Em Java, essa palavra-chave é usada para se referir ao objeto atual dentro de um método ou construtor. Por exemplo,
class Main {
    int instVar;

    Main(int instVar){
        this.instVar = instVar;
        System.out.println("this reference = " + this);
    }

    public static void main(String[] args) {
        Main obj = new Main(8);
        System.out.println("object reference = " + obj);
    }
}

Saída :
this reference = Main@23fc625e
object reference = Main@23fc625e

No exemplo acima, criamos um objeto chamado obj da classe Principal . Em seguida, imprimimos a referência ao objeto obj e this palavra-chave da classe.

Aqui, podemos ver que a referência de ambos obj e this é o mesmo. Isso significa que isso nada mais é do que a referência ao objeto atual.

Uso desta palavra-chave


Existem várias situações em que this palavra-chave é comumente usada.

Usando isso para nomes de variáveis ​​de ambiguidade


Em Java, não é permitido declarar duas ou mais variáveis ​​com o mesmo nome dentro de um escopo (escopo de classe ou escopo de método). No entanto, variáveis ​​de instância e parâmetros podem ter o mesmo nome. Por exemplo,
class MyClass {
    // instance variable
    int age;

    // parameter
    MyClass(int age){
        age = age;
    }
}

No programa acima, a variável de instância e o parâmetro têm o mesmo nome:idade. Aqui, o compilador Java está confuso devido à ambiguidade do nome.

Em tal situação, usamos esta palavra-chave. Por exemplo,

Primeiro, vamos ver um exemplo sem usar this palavra-chave:
class Main {

    int age;
    Main(int age){
        age = age;
    }

    public static void main(String[] args) {
        Main obj = new Main(8);
        System.out.println("obj.age = " + obj.age);
    }
}

Saída :
obj.age = 0

No exemplo acima, passamos 8 como um valor para o construtor. No entanto, estamos recebendo 0 como saída. Isso ocorre porque o compilador Java fica confuso devido à ambiguidade nos nomes entre a instância da variável e o parâmetro.

Agora, vamos reescrever o código acima usando this palavra-chave.
class Main {

    int age;
    Main(int age){
        this.age = age;
    }

    public static void main(String[] args) {
        Main obj = new Main(8);
        System.out.println("obj.age = " + obj.age);
    }
}

Saída :
obj.age = 8

Agora, estamos obtendo a saída esperada. É porque quando o construtor é chamado, this dentro do construtor é substituído pelo objeto obj que chamou o construtor. Daí a idade à variável é atribuído o valor 8 .

Além disso, se o nome do parâmetro e da variável de instância for diferente, o compilador anexará automaticamente essa palavra-chave. Por exemplo, o código:
class Main {
    int age;

    Main(int i) {
        age = i;
    }
}

é equivalente a:
class Main {
    int age;

    Main(int i) {
        this.age = i;
    }
}

isso com Getters e Setters




Outro uso comum de this palavra-chave está em métodos setters e getters de uma classe. Por exemplo:
class Main {
   String name;

   // setter method
   void setName( String name ) {
       this.name = name;
   }

   // getter method
   String getName(){
       return this.name;
   }

   public static void main( String[] args ) {
       Main obj = new Main();

       // calling the setter and the getter method
       obj.setName("Toshiba");
       System.out.println("obj.name: "+obj.getName());
   }
}

Saída :
obj.name: Toshiba

Aqui, usamos this palavra-chave:

Usando isso na sobrecarga do construtor


Ao trabalhar com sobrecarga de construtor, podemos ter que invocar um construtor de outro construtor. Nesse caso, não podemos chamar o construtor explicitamente. Em vez disso, temos que usar this palavra-chave.

Aqui, usamos uma forma diferente dessa palavra-chave. Ou seja, this() . Vamos dar um exemplo,
class Complex {

    private int a, b;

    // constructor with 2 parameters
    private Complex( int i, int j ){
        this.a = i;
        this.b = j;
    }

    // constructor with single parameter
    private Complex(int i){
        // invokes the constructor with 2 parameters
        this(i, i); 
    }

    // constructor with no parameter
    private Complex(){
        // invokes the constructor with single parameter
        this(0);
    }

    @Override
    public String toString(){
        return this.a + " + " + this.b + "i";
    }

    public static void main( String[] args ) {
  
        // creating object of Complex class
        // calls the constructor with 2 parameters
        Complex c1 = new Complex(2, 3); 
    
        // calls the constructor with a single parameter
        Complex c2 = new Complex(3);

        // calls the constructor with no parameters
        Complex c3 = new Complex();

        // print objects
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
    }
}

Saída :
2 + 3i
3 + 3i
0 + 0i

No exemplo acima, usamos this palavra-chave,

Observe a linha,
System.out.println(c1);

Aqui, quando imprimimos o objeto c1 , o objeto é convertido em uma string. Nesse processo, o toString() é chamado. Como substituímos o toString() dentro de nossa classe, obtemos a saída de acordo com esse método.

Uma das grandes vantagens do this() é reduzir a quantidade de código duplicado. No entanto, devemos sempre ter cuidado ao usar this() .

Isso ocorre porque chamar o construtor de outro construtor adiciona sobrecarga e é um processo lento. Outra grande vantagem de usar this() é reduzir a quantidade de código duplicado.

Observação :Chamar um construtor de outro construtor é chamado de invocação explícita do construtor.

Passando isso como um argumento


Podemos usar this palavra-chave para passar o objeto atual como um argumento para um método. Por exemplo,
class ThisExample {
    // declare variables
    int x;
    int y;

    ThisExample(int x, int y) {
       // assign values of variables inside constructor
        this.x = x;
        this.y = y;

        // value of x and y before calling add()
        System.out.println("Before passing this to addTwo() method:");
        System.out.println("x = " + this.x + ", y = " + this.y);

        // call the add() method passing this as argument
        add(this);

        // value of x and y after calling add()
        System.out.println("After passing this to addTwo() method:");
        System.out.println("x = " + this.x + ", y = " + this.y);
    }

    void add(ThisExample o){
        o.x += 2;
        o.y += 2;
    }
}

class Main {
    public static void main( String[] args ) {
        ThisExample obj = new ThisExample(1, -2);
    }
}

Saída :
Before passing this to addTwo() method:
x = 1, y = -2
After passing this to addTwo() method:
x = 3, y = 0

No exemplo acima, dentro do construtor ThisExample() , observe a linha,
add(this);

Aqui, estamos chamando o add() método passando isso como um argumento. Como esta palavra-chave contém a referência ao objeto obj da classe, podemos alterar o valor de x e s dentro do add() método.

Java

  1. C# esta palavra-chave
  2. Operadores Java
  3. Comentários Java
  4. Java para cada loop
  5. Construtores Java
  6. Strings Java
  7. Java esta palavra-chave
  8. Palavra-chave final Java
  9. Interface Java
  10. Encapsulamento Java