Olá pessoal!
Ainda sinto um pouco de dificuldades para identificar a qual elemento o "this." se refere.
Olá pessoal!
Ainda sinto um pouco de dificuldades para identificar a qual elemento o "this." se refere.
Oi Tatiana
A palavra reservada "this" é uma variável que referencia o objeto atual. O objetivo principal de usar o "this" é remover a confusão entre os atributos de classe e os parâmetros que têm os mesmos nomes. Por exemplo:
public class Point {
    public int x = 0;
    public int y = 0;
    //constructor
    public Point(int x, int y) {
        this.x = x; // o this.x é o atributo x da classe, o x sem o this é o argumento do construtor
        this.y = y;
    }
}Outro exemplo:
public class MyThisTest {
  private int a;
  public MyThisTest() {
    this(42); // chama o construtor abaixo
  }
  public MyThisTest(int a) {
    this.a = a; // coloca o valor do parâmetro "a" no atributo de classe "a" com o mesmo nome
  }
  public void frobnicate() {
    int a = 1;
    System.out.println(a); // referencia a variavel local "a" (int a = 1)
    System.out.println(this.a); // referencia o atributo "a" (private int a)
    System.out.println(this); // referencia o objeto corrente todo
  }
  public String toString() {
    return "MyThisTest a=" + a; // referencia ao atributo "a"
  }
}Muito obrigada!!! me ajudou muito!!! Muito esclarecedor!!!!
Não tinha visto ainda essa alternativa:
 System.out.println(this); // referencia o objeto corrente todopode me falar um pouco mais sobre ela?
Claro!
Por exemplo, quando estamos dentro de uma classe qualquer e usamos o "this" é como se estivessemos usando a referência gerada pelo comando "new":
class Pessoa {
    private int idade = 18;
    public void metodoDaClasse() {
        System.out.println(this); // referencia o objeto Pessoa (como estou dentro de pessoa, a forma de usar a referência ao objeto corrente "pessoa" é através do "this"
    }
    public String toString() {
        return "[Pessoa] idade=" + this.idade; // referencia ao atributo "idade" do objeto corrente "pessoa"
    }
}
public class Main {
    public static void main(String[] args) {
        Pessoa pessoa = new Pessoa();
        pessoa.metodoDaClasse();
        System.out.println(pessoa); // como não estou dentro do objeto "pessoa" o jeito de referenciar esse objeto é através da referencia gerada através do "new Pessoa();"
    }
}Nesse exemplo, System.out.println(this); e System.out.println(pessoa); vão ter o mesmo efeito: ambos vão chamar o método toString()
Muitíssimo obrigada!!!! me ajudou muito!!!!!!
Fico feliz que tenha ajudado, se tiver outra dúvida e eu puder ajudar só falar :)
Obrigada!!! pode deixar!!