Duvida simples sobre variaveis

2 respostas
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!

2 Respostas

rogelgarcia

Recomendaçao: estudar orientaçao a objetos…

Não era pra dar erro…

Uma é variavel local e outra é variavel de instancia (ou atributo para os mais intimos)…

Em Java não existem variáveis globais

renamed
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?

Criado 12 de julho de 2010
Ultima resposta 12 de jul. de 2010
Respostas 2
Participantes 3