private volatile int utteranceCount;
public Politician(String name) {
super(name);
start();
}
public void run() {
while (utteranceCount < totalSpeechCount * utterancesPerSpeech) {
utteranceCount++;
}
}
Такой вопрос, при каких условиях можно инкрементировать (оперировать) переменную без инициализации? (private volatile int utteranceCount).
Понятное дело, по дефолту присваивается значение 0, просто если просто в main() создать переменную int x и попытаться вывести, то просит иницализацию.
Спасибо.
Valerii
23 уровень
Инкрементация переменной без инициализации
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #2322530
15 октября 2020, 18:48полезный
Такой вопрос, при каких условиях можно инкрементировать (оперировать) переменную без инициализации? (private volatile int utteranceCount).
если она принадлежит объекту (является его полем), тогда при создании объекта автоматически поля инициализируется значением по умолчанию (для int это 0). это такой механизм на уровне JVM
либо является статичным полем (принадлежит классу) тогда она инициализируется во время загрузки класса.
когда ты создаешь переменную в main() это локальная переменная, она никому не принадлежит, поэтому прежде чем к ней обращаться, ты должен её инициализировать.
+2
Ksenia Volkova Java Developer в DXC Master
15 октября 2020, 18:43решение
Локальные переменные не инициализируются значениями по умолчанию. Поэтому если объявляешь переменную в main, то это работать не будет.
А если поле класса - то пожалуйста.
+3