Что такое третье логическое состояние в Java? - PullRequest
26 голосов
/ 04 июня 2009

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

Ответы [ 8 ]

69 голосов
/ 04 июня 2009

По умолчанию установлено значение false.

Редактировать: По многочисленным просьбам:

, если вы не используете обернутый Boolean , который по умолчанию равен нулю. - sudhir.j

16 голосов
/ 04 июня 2009

Если это локальная переменная, ошибка компилятора ссылаться на нее до ее инициализации. Если это поле, оно инициализируется как false.

9 голосов
/ 04 июня 2009
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 как почти по-настоящему ОО-язык (я ненавижу иметь примитивные типы ... сейчас, только если он будет работать в обратном направлении). Однако он меняет поведение при использовании объекта (для лучшего ИМО).

2 голосов
/ 04 июня 2009

Третьего состояния нет. Как сказал @Yishai, если вы не присваиваете значение, логические поля по умолчанию имеют значение false. Локальные переменные должны быть назначены перед использованием:

Доступ к неинициализированному локальному переменная приведет к времени компиляции ошибка

См. Документ .

1 голос
/ 05 июня 2009

FYI, логическое значение по умолчанию - false, примитивные числа по умолчанию - 0, 0L, 0f или 0d, в зависимости от ситуации, char - по умолчанию '\ 0', ссылки на объекты (например, логические) по умолчанию - null.

Это также относится к содержимому массивов. (Обычная ошибка заключается в том, что массив объектов изначально полон нулевых значений)

1 голос
/ 04 июня 2009

В логических типах JAVA по умолчанию установлено значение False.

0 голосов
/ 04 июня 2009

Если у вас было что-то вроде

boolean isTrue;

System.out.println(isTrue);

Вы должны получить ошибку времени компиляции, потому что логическое значение не было инициализировано. По умолчанию, когда вы пытаетесь инициализировать это, оно будет установлено в false;

0 голосов
/ 04 июня 2009

Это ложь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...