Quando as variaveis tem nomes diferentes, ai não precisa de usar o this.
Mas quando existe duas variáveis com o mesmo nome, para distinguir qual é a variável externa e qual é a variável interna usa-se o this para referenciar a variável externa…
Assim o this.cpf se refere ao cpf private String cpf
O this é para indicar explicitamente que você está usando algo do objeto da classe.
Por exemplo (atenção às cores - usei tracinhos ao invés de espaços pois não usei a formatação do GUJ):
public class Teste {
----private String [color=red]cpf[/color];
----public setCpf( String [color=blue]cpf [/color]) {
--------this.[color=red]cpf[/color] = [color=blue]cpf[/color];
----}
}
Nesse exemplo (igual ao seu), usa-se o this para indicar que deve-se atribuir ao campo [color=red]cpf[/color] da classe Teste o valor de [color=blue]cpf[/color] que é parâmetro do método setCpf. Como o Netuno disse, se fossem variáveis com nomes diferentes não seria necessário utilizar o this. O this nesse caso se faz necessário pois as variáveis tem o mesmo nome. Isso ai é conhecido com shadowing, ou seja, vc “sombreia” a variável de escopo de instância ou de classe com a variável de escopo do método.
Como falei, o this sempre e usado para fazer referência explícita a algum membro da classe.
public void setNome(String nome){
this.nome = nome; // repare que vc tem 2 variaveis com o mesmo nome, só que uma pertence ao metodo e a outra a classe
}[/code]
se vc tem um metodo que recebe como parametro um objeto, e nesse objeto vc chama esse metodo vc passa this;
[code]
public class UmObjeto{
public void chama(){
Teste t = new Teste();
t.fazAlgo(this);
this é uma referência à instancia atual do objeto e, com ela, vc consegue acessar atributos e, também, métodos. this não funciona sobre atributos estáticos (pra isso vc utiliza o nome da classe), muito menos vc pode utiliza-lo em métodos estaticos (afinal eles não estão no contexto de instância). seria um erro tentar usar this a partir do método main, por exemplo.
this também pode ser utilizado para chamar o construtor da sua classe
public class A{
String name;
public A(String name){
this.name = name; // isso vc conhece
}
public A(){
this("?"); // chama o construtor acima !
}
}