Подтвердить что ты не робот

Что такое третье булево состояние в java?

Хотя я знаю, что по определению логическое состоит только из двух состояний: true или false. Мне было интересно, какое значение имеет значение boolean, прежде чем оно будет инициализировано одним из этих состояний.

4b9b3361

Ответ 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;