diegofss11:
Class x {
int x = 10;
int y = 20;
public static void main (String args[])
{
int x = 0, y = 10; // NAO ERA PRA DA ERRO NESTA LINHA NAO ? PQ ESTOU DECLARANDO ALGO QUE JA ESTA DECLARADO... ou é pq eu posso fazer isso qnd for global?
....
}
}
Por que nao há erro neste exemplo ???
Obrigado!
Por dois motivos:
1)
Class x {
int x = 10;
int y = 20;
Não estão em um ambiente estático, se você quiser acessá-los dentro do método main, que é static, não vai conseguir.
2)
Suponha que você tenha essa situação:
int x = 10, y = 20;
public int somaDobro(){
int x = this.x * 2;
int y = this.y * 2;
return x + y;
}
Você, nesse caso, pode fazer referência aos atributos fora do método, mesmo que com mesmo nome, através da palavra reservada this. Note que o método não é static.
Nesse caso, se você colocasse x = x * 2; haveria erro de compilação porque o Java não inicia variáveis local, apenas atributos.
Está clara a diferença entre atributo e variável local?