Вопрос

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

Это было полезно?

Решение

По умолчанию оно равно false.

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

если только вы не используете завернутый Логическое значение, который по умолчанию равен null.– судхир.джей

Другие советы

Если это локальная переменная, то ссылка на нее до ее инициализации является ошибкой компилятора.Если это поле, то оно инициализируется значением 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 как почти настоящий OO-язык (я ненавижу иметь примитивные типы...теперь только в том случае, если это тоже будет работать в обратном направлении).Однако это меняет поведение при использовании объекта (в лучшую сторону IMO).

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

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

Видишь док.

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

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

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

Это так ложь

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

boolean isTrue;

System.out.println(isTrue);

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top