Variáveis Locais

Variáveis locais são definidas dentro de um método, e elas incluem parâmetros de métodos. Devem sempre ser inicializadas explicitamente antes de usá-las. É possível declara-las e não inicializá-las imediatamente, mas isso deve ser feito antes de tentar utiliza-las. Isso acontece porque o Java não atribui valores default para variáveis locais.

Variáveis Locais do Tipo Primitivas

Quando uma variável local do tipo primitiva que não foi inicializada é utilizada, o código não compila. Na verdade, legalmente, essa variável pode ser declarada sem ser inicializada, porém, não poderá ser utilizada até que receba um valor explícito; mas não faz sentido declara-la e não poder utilizá-la, por isso é melhor inicializá-la.
Existem casos em que uma variável local é inicializada dentro de um bloco condicional, ou seja, depende de uma condição para ser inicializada ou não.
Ao tentar utilizar essa variável o compilador irá reclamar também, pois é assumido que não há como saber se a condição será satisfeita para que a variável seja inicializada. Ou seja, o compilador irá obrigar a inicializar essa variável com um valor qualquer fora do bloco de condição e antes de ser utilizada.


public class Caixa {
     
      public static void main(String[] args) {
            //var primitiva local não-inicializada
            int lado;
            /*erro - não é possível utilizar uma
             *variável local q não foi inicializada*/
            System.out.println(lado);
            lado = 4;
            System.out.println(lado);
           
            //var primitiva local não-inicializada
            double area;
            /* variável primitiva local sendo
             * inicializada dentro de um bloco
             * condicional; ou seja, pode ou não ser
             * inicializada */
            if (lado == 4)
                  area = 16;
            /* o compilador assume que não será
             * inicializada e gera um erro de
             * compilação, forçando uma inicialização
             * qualquer antes do bloco */
            System.out.println(area);
      }
     
}


Variáveis Locais do Tipo Objeto

Variáveis de instância do tipo objeto recebem o valor null quando a classe é instanciada; variáveis locais do tipo objeto não recebem nenhum valor implicitamente. Logo, uma referência nula não é a mesma coisa que uma referência não inicializada. Isso quer dizer que não adianta tentar testar se uma variável local do tipo objeto não inicializada é nula, pois ela não estará se referindo a nenhuma valor enquanto não for inicializada explicitamente como null ou qualquer outro valor.
Da mesma forma que variáveis locais primitivas não inicializadas, variáveis locais do tipo objeto não inicializadas não compilam ao serem utilizadas em alguma parte do código.


import java.util.Date;

public class Evento {
     
      public static void main(String[] args) {
            /* variável local do tipo objeto 
             * não-inicializada */
            Date date;
            /* erro -  variáveis locais do tipo
             * objeto não possuem valor, portanto,
             * enquanto não receberem explicitamente
             * o valor null ou qualquer outro não
             * poderão ser utilizadas */
            if (date == null)
                  date = new Date();
           
            date = new Date();
            date.getTime();
      }

}


Arrays Locais

Arrays são objetos, logo, é obrigatório atribuir um valor para um array local antes de utilizá-lo. Porém, não é necessário inicializar seus elementos, pois receberão seus valores default assim que o array for inicializado.


Fonte: SCJP Sun Certified Programmer for Java 6 Study Guide

0 comentários:

Postar um comentário