1
resposta

valor default das variáveis.

Percebi que instanciar uma variável no método main sem lhe atribuir valor dá o seguinte erro ao tentar imprimir no console: The local variable dez may not have been initialized.

Já fazendo isso em outra classe não há problema algum:


public class Variaveis {

    int varInt;
    long varLong;
    byte varByte;
    short varShort;
    double varDouble;
    float varFloat;
    char varChar;
    boolean varBoolean;

    public void testaVariaveis() {
        System.out.println(varInt);
        System.out.println(varLong);
        System.out.println(varShort);
        System.out.println(varByte);
        System.out.println(varFloat);
        System.out.println(varChar);
        System.out.println(varDouble);
        System.out.println(varBoolean);
    }
}

Alguém pode dar uma explicação teórica?

1 resposta

Olá Felipe, tudo bem com você?

Isso acontece por uma limitação do Java. Quando criamos uma variável dentro de um método, como no caso do main:

public class TesteVariaveis {
    public static void main(String[] args){
        int variavelDoTipoInt;
    }
}

a variável precisa receber um valor para ser utilizada porque nesse ponto, ela é apenas um espaço vazio, que não guarda valor nenhum.

Já quando criamos a variável dentro de uma classe:

public class TesteVariaveis {
    int variavelDoTipoInt;
    public static void main(String[] args){
        //código da main omitido
    }
}

Ela serve como molde e atribui um valor padrão dependendo do tipo da variável: As variáveis de tipo numérico, são inicializadas com o valor 0, e do tipo boolean recebem o valor false. Isso possibilita que elas sejam utilizadas sem gerar exceções como no caso de variáveis criadas dentro de métodos.

Para ficar ainda mais claro você pode conferir a documentação da oracle que fala sobre valores padrão em tipos primitivos no Java. O texto está em inglês mas você pode utilizar a função de tradução do seu navegador para entender caso encontre alguma dificuldade!

Me coloco à disposição e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!