Variáveis locais

5 respostas
C

Olá,

...
public static void main(String[] args){
				
		int x = 10;
		int y;
		
       //y = x/2; <-- linha 3
		if(x < 100) y = x/2;
		if(x >= 100) y = x * 0;
		System.out.println("The value of y is: "+ y); //<--Nao compila variavel tem que ser inicializada
	}
...

Dúvida: o código acima nao compila, a inicializaca da variavel local dentro de um IF, nao é valido ? Considera um escopo diferente ?

obs: se tirar o comentario da linha 3, compila e executa normalmente.

5 Respostas

rodrigo.bossini

Como o if é um comando de decisão, com duas possíveis saídas, então a inicialização deveria ser feita em ambas saídas…

ou seja, vc deveria fazer o else, pra que o compilador saiba qual valor atribuir para y caso a condição do if seja avaliada com false.

Se vc tirar o comentário ele compila normalmente, pq independente do que aconteça no if, o y já terá sido inicializado.

davidtiagoconceicao

O código não compila porque o compilador entende que pode ocorrer uma situação em que nenhuma das condiçõe de if seja atingida. Ou seja, o compilador não consegue interpretar que os if’s são complementares.
Experimente alterar seu código para:

public static void main(String[] args){
				
		int x = 10;
		int y;

		if(x &lt; 100) 
                    y = x/2;
		else
                    y = x * 0;
		System.out.println("The value of y is: "+ y);
	}
A

Para variáveis locais é obrigatório a inicialização, isso é uma forma de protegeção do compilador, já para as variáveis de instâncias os valores são configurados com valores padrões.

C

Valeu Pessoal!

Nossa, estou estudando pelo livro da Kathy … mas fiz uns simulados Whizlabs, são mais complexas … o nível da prova SCJP, é o mesmo do Whizlabs ?

Mais uma vez, obrigado.

B

Não, a SCJP é mais fácil que o Whizlabs.

Criado 1 de dezembro de 2008
Ultima resposta 1 de dez. de 2008
Respostas 5
Participantes 5