Variáveis Locais
Uma variável local é uma variável definida dentro de um método. Variáveis locais devem ser inicializadas antes de usar. Eles não têm um valor padrão e contêm dados de lixo até serem inicializados. O compilador não permitirá que você leia um valor não inicializado. Por exemplo, o seguinte código gera um erro do compilador:
4: public int notValid() {5: int y = 10;6: int x;7: int reply = x + y; // DOES NOT COMPILE8: return reply;9: }y é inicializado em 10. No entanto, como x não foi inicializado antes de ser usado na expressão na linha 7, o compilador gera o seguinte erro:
Test.java:5: variable x might not have been initializedint reply = x + y; ^Até ser atribuído um valor a x, ele não pode aparecer dentro de uma expressão, e o compilador de bom grado irá lembrá-lo desta regra. O compilador sabe que seu código tem controle sobre o que acontece dentro do método e espera que os campos sejam inicializados com valores.
O compilador é esperto o suficiente para reconhecer variáveis que foram inicializadas após declaração, mas antes de serem usados. Veja um exemplo:
public int valid() { int y = 10; int x; // x is declared here x = 3; // and initialized here int reply = x + y; return reply;}O compilador também é inteligente o suficiente para reconhecer inicializações que são mais complexas. Neste exemplo, existem dois ramos de código. answer é inicializado em ambos assim o compilador fica feliz. onlyOneBranch é inicializado apenas se o check for true. O compilador sabe que existe a possibilidade da verificação ser false, resultando no código, que dá um erro no compilador. Você aprenderá mais sobre a declaração if no próximo capítulo.
public void findAnswer(boolean check) { int answer; int onlyOneBranch; if (check) { onlyOneBranch = 1; answer = 1; } else { answer = 2; } System.out.println(answer); System.out.println(onlyOneBranch); // DOES NOT COMPILE}