Ответ
Значение по умолчанию зависит от контекста объявления переменной:
- Поля класса (нестатические) и статические переменные: Инициализируются значением
false. - Локальные переменные внутри методов: Не имеют значения по умолчанию. Компилятор требует явной инициализации перед использованием, иначе возникает ошибка компиляции.
Пример, демонстрирующий разницу:
public class DefaultValuesExample {
boolean instanceField; // Значение по умолчанию: false
static boolean staticField; // Значение по умолчанию: false
public void someMethod() {
boolean localVariable; // Не инициализирована
// System.out.println(localVariable); // ОШИБКА КОМПИЛЯЦИИ: variable might not have been initialized
localVariable = true; // Требуется явная инициализация
System.out.println(localVariable); // OK
}
} Ответ 18+ 🔞
Вот же ж, классика, блядь! Сидишь такой, пишешь код, думаешь — ну boolean, что там может быть сложного? А потом бац — и тебе в жопу раз, ошибка компиляции, потому что локальную переменную не проинициализировал. Ёпта, аж волнение ебать!
Смотри, тут всё просто, как три копейки, но с подвохом, сука.
Есть два типа этих самых boolean-переменных, и они живут по разным законам, блядь:
-
Поля класса (ну, те, что просто в теле класса объявлены) и статические переменные. Это, можно сказать, привилегированные граждане. JVM их при рождении сразу награждает значением
false. Ничего не делай — ужеfalse. Как будто по умолчанию они все немножко лгут, блядь. -
Локальные переменные внутри методов. А вот это, сука, мартышлюшки безответственные! У них нет никакого значения по умолчанию, нихуя! Компилятор на них смотрит как на потенциальных дебилов и говорит: «Чувак, бля, я тебе не доверяю. Пока сам явно не присвоишь
trueилиfalse— я тебя в работу не пущу, иди нахуй». И будет прав, между прочим.
Вот смотри, живой пример, чтобы совсем пиздец всё стало ясно:
public class DefaultValuesExample {
boolean instanceField; // Вот этому чуваку автоматом впендюрили false. Живёт припеваючи.
static boolean staticField; // И этому тоже. Статик он или нет — похуй, всем false.
public void someMethod() {
boolean localVariable; // А вот эта хитрая жопа — пустая. В ней вакуум, блядь.
// System.out.println(localVariable); // Раскомментируешь — получишь пиздюлей от компилятора! «variable might not have been initialized», ёбта!
localVariable = true; // Вот теперь, сука, взял и явно сказал, что тут true. Порядок.
System.out.println(localVariable); // Теперь всё ок, можно использовать. Вилкой в глаз не ткнут.
}
}
Короче, запомни, как «Отче наш»: поля класса — им похуй, они с false стартуют. А внутри метода — будь добр, сам всё определи, а то накроешься медным тазом с ошибкой компиляции. Всё просто, блядь!