Хотя я знаю, что по определению логическое значение состоит только из двух состояний, истинного или ложного. Мне было интересно, какое значение имеет логическое значение до того, как оно будет инициализировано одним из этих состояний.
Что такое третье логическое состояние в Java?
Ответы (8)
По умолчанию установлено значение false.
Изменить: По многочисленным просьбам:
если вы не используете обернутое логическое значение, который по умолчанию равен нулю. - Судхир.Дж
Если это локальная переменная, ссылка на нее до ее инициализации является ошибкой компилятора. Если это поле, оно инициализируется значением false.
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 как почти настоящий объектно-ориентированный язык (я ненавижу примитивные типы... теперь, только если это будет работать и в обратном направлении). Однако это меняет поведение при использовании объекта (в лучшую сторону, IMO).
Третьего состояния нет. Как сказал @Yishai, если вы не присваиваете значение, логические поля по умолчанию имеют значение false. Локальные переменные должны быть назначены перед использованием:
Доступ к неинициализированной локальной переменной приведет к ошибке времени компиляции.
См. документ.
В JAVA логические типы по умолчанию имеют значение False.
К вашему сведению, логические значения по умолчанию равны false, примитивные числа по умолчанию равны 0, 0L, 0f или 0d в зависимости от ситуации, символьные значения по умолчанию равны '\0', ссылки на объекты (например, логические значения) по умолчанию равны нулю.
Это также относится к содержимому массивов. (Общая ошибка заключается в том, что массив объектов изначально заполнен нулевыми значениями)
Это ложь
Если бы у вас было что-то вроде
boolean isTrue;
System.out.println(isTrue);
Вы должны получить ошибку времени компиляции, потому что логическое значение не было инициализировано. По умолчанию, когда вы пытаетесь инициализировать это, для него будет установлено значение false;