"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que Java gera um erro para variáveis ​​locais não inicializadas, mas não para variáveis ​​de instância não inicializadas?

Por que Java gera um erro para variáveis ​​locais não inicializadas, mas não para variáveis ​​de instância não inicializadas?

Publicado em 2024-11-22
Navegar:514

Why Does Java Raise an Error for Uninitialized Local Variables but Not for Uninitialized Instance Variables?

Variáveis ​​e membros não inicializados em Java

Considere o seguinte snippet:

public class TestClass {

    private String a;
    private String b;

    public TestClass() {
        a = "initialized";
    }

    public void doSomething() {
        String c;

        a.notify(); // This is fine
        b.notify(); // This is fine - but will end in an exception
        c.notify(); // "Local variable c may not have been initialized"
    }
}

Embora "b" e "c" não tenham sido inicializados, o compilador gera um erro em tempo de compilação para "c", mas não para "b". Essa diferença decorre das regras da linguagem para inicializar variáveis ​​de instância e variáveis ​​locais.

Variáveis ​​de instância do tipo de objeto (como "a" e "b") são inicializadas como nulas por padrão quando não são inicializadas explicitamente. É por isso que acessar “b.notify()” não resulta em erro imediato, pois é efetivamente equivalente a “null.notify()”. No entanto, esse acesso acabará por acionar uma NullPointerException quando o código for executado.

Em contraste, variáveis ​​locais do tipo de objeto não são inicializadas por padrão. A tentativa de acessar uma variável local não inicializada, como "c", resulta diretamente em um erro em tempo de compilação. Este requisito rigoroso garante que as variáveis ​​locais sejam sempre inicializadas corretamente antes de serem usadas.

Declaração de lançamento Este artigo é reproduzido em: 1729738619 Se houver alguma violação, entre em contato com [email protected] para excluí -lo.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3