@kofon
Я человек

Java. Какое значение у переменной после объявления?

static int staticVar;
void someMethod() {
    int locVar;
    // мое мнение таково
    // и в staticVar и в locVar
    // значения 0
}

Правильно ли я мыслю?
Возможно не так, ведь в C++ по умолчанию в переменной "мусор", остатки из ячеек ОЗУ (если ошибаюсь, дайте знать).
Но в статической переменной я могу вытащить значение, а с локальной компилятор не дает.
  • Вопрос задан
  • 2660 просмотров
Пригласить эксперта
Ответы на вопрос 3
@gurinderu
java developer
В случае с static переменной будет 0. В случае второй будет ошибка при компиляции при обращении к этой переменной. Как у вас написано locVar формально вообще определено не будет.
Ответ написан
@bimeg
Когда-то давно кто-то решил что не инициализированная локальная переменная это вероятный баг в программе. И запретили использовать их без явной инициализации.

Все дефолтные значения филдов явно прописаны в спеке (для инта это 0).
Ответ написан
hrls
@hrls
Если мне не изменяет память, то нулем инициализируются только поля класса (куча), но не переменные в методе (стек). Т.е. в примере выше статическая переменная будет проинициализирована нулем, в отличие от локальной переменной, т.к. статическая переменная - суть есть поле в экземпляре класса.
Ну и понятно, что узнать значение локальной переменной без инициализации нельзя - компилятор не пропустит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект