Хотя я знаю, что по определению логическое состоит только из двух состояний: true или false. Мне было интересно, какое значение имеет значение boolean, прежде чем оно будет инициализировано одним из этих состояний.
Что такое третье булево состояние в java?
Ответ 1
По умолчанию установлено значение false.
Изменить: По популярному запросу:
если вы не используете завернутый Boolean, который по умолчанию имеет значение null. - sudhir.j
Ответ 2
Если это локальная переменная, это ошибка компилятора, чтобы ссылаться на нее до ее инициализации. Если это поле, оно инициализируется значением false.
Ответ 3
public class NewMain {
boolean foo;
Boolean bar;
public static void main(String[] args) {
NewMain obj = new NewMain();
obj.whatBoolean();
}
public void whatBoolean() {
System.out.println(foo);
System.out.println(bar);
}
}
выходы
false
null
Я знаю, что это было более философским вопросом, но благодаря автобоксированию вы можете использовать Java как почти по-настоящему OO-язык (я ненавижу иметь примитивные типы... теперь, только если он будет работать и наоборот). Однако он изменяет поведение при использовании объекта (для лучшего ИМО).
Ответ 4
Нет третьего состояния. Как сказал @Yishai, если вы не назначили значение, логические поля по умолчанию равны false. Перед использованием необходимо назначить локальные переменные:
Доступ к неинициализированному локальному переменная приведет к времени компиляции ошибка
Смотрите документ.
Ответ 5
В логических типах JAVA по умолчанию используется значение False.
Ответ 6
FYI, boolean по умолчанию - false, примитивные номера по умолчанию равны 0, 0L, 0f или 0d соответственно, char по умолчанию - '\ 0', ссылки на объекты (такие как Boolean) по умолчанию равны null.
Это также относится к содержимому массивов. (Общая информация о том, что массив объектов изначально заполнен нулевыми значениями)
Ответ 7
Это false
Ответ 8
Если у вас есть что-то вроде
boolean isTrue;
System.out.println(isTrue);
Вы должны получить ошибку времени компиляции, потому что логическое значение не было инициализировано. По умолчанию при попытке инициализировать это будет установлено значение false;