«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему Java выдает ошибку для неинициализированных локальных переменных, но не для неинициализированных переменных экземпляра?

Почему Java выдает ошибку для неинициализированных локальных переменных, но не для неинициализированных переменных экземпляра?

Опубликовано 22 ноября 2024 г.
Просматривать:526

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

Неинициализированные переменные и члены в Java

Рассмотрим следующий фрагмент:

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"
    }
}

Хотя и "b", и "c" не инициализированы, компилятор выдает ошибку времени компиляции для "c", но не для "b". Это различие вытекает из правил языка для инициализации переменных экземпляра и локальных переменных.

Переменные экземпляра объектного типа (например, «a» и «b») по умолчанию инициализируются нулевым значением, если они не инициализированы явно. Вот почему доступ к «b.notify()» не приводит к немедленной ошибке, поскольку он фактически эквивалентен «null.notify()». Однако этот доступ в конечном итоге вызовет исключение NullPointerException при выполнении кода.

Напротив, локальные переменные типа объекта не инициализируются по умолчанию. Попытка доступа к неинициализированной локальной переменной, такой как «c», напрямую приводит к ошибке времени компиляции. Это строгое требование гарантирует, что локальные переменные всегда правильно инициализируются перед использованием.

Заявление о выпуске Эта статья воспроизводится: 1729738619 Если есть какие -либо нарушения, пожалуйста, свяжитесь с [email protected], чтобы удалить его.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3