Gabriel,
me metendo um pouco para tentar esclarecer mais.
Veja a palavra this como uma referência às coisas do objeto, e não às locais.
Vamos pegar o último exemplo do Celso.
public class Conta {
private double valor ;
Conta(double valor ) {
this.valor = valor
}
}
Dentro do construtor você está atribuindo o valor da variável valor passada como parâmetro para dentro da variável do objeto que também se chama valor.
Poderíamos reescrever assim:
public class Conta {
private double valorObjeto;
Conta(double valorLocal) {
this.valorObjeto = valorLocal;
}
}
Mas como agora o nome valorObjeto e valorLocal são diferentes, nem precisamos mais especificar o this, pois não há mais como o Java se confundir com nomes iguais. Portanto, também poderia ser feito:
public class Conta {
private double valorObjeto;
Conta(double valorLocal) {
valorObjeto = valorLocal;
}
}
Então o uso do this é opcional em casos onde não há conflitos de nomes entre as "variáveis globais" (atributos da classe/objeto) e as locais.