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.
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