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
}
…[/code]
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.
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 < 100)
y = x/2;
else
y = x * 0;
System.out.println("The value of y is: "+ y);
}
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.