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

В Laravel 5.7

Ограничение динамической скорости Вы можете указать максимум динамического запроса на основе атрибута аутентифицированной модели пользователя. Например, если ваша модель пользователя содержит атрибут rate_limit, вы можете передать имя атрибута промежуточному программному обеспечению дросселя, чтобы оно использовалось для расчета максимального количества запросов:

Route::middleware('auth:api', 'throttle:rate_limit,1')->group(function () {
    Route::get('/user', function () {
        //
    });
});

https: //laravel.com/docs/5.7/routing#rate-limiting

26
задан soldier.moth 4 June 2009 в 18:03
поделиться

8 ответов

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

Изменить: По многочисленным просьбам:

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

69
ответ дан 28 November 2019 в 06:07
поделиться

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

16
ответ дан 28 November 2019 в 06:07
поделиться

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

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

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

2
ответ дан 28 November 2019 в 06:07
поделиться
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);
    }
}

output

false
null

Я знаю, что это был более философский вопрос, но благодаря автобоксу вы можете использовать Java как почти настоящий объектно-ориентированный язык (я ненавижу примитивные типы ... теперь, только если бы он работал и в обратном направлении) . Однако это меняет поведение при использовании объекта (в лучшую сторону, IMO).

9
ответ дан 28 November 2019 в 06:07
поделиться

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

1
ответ дан 28 November 2019 в 06:07
поделиться

Это ложь

0
ответ дан 28 November 2019 в 06:07
поделиться

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

boolean isTrue;

System.out.println(isTrue);

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

0
ответ дан 28 November 2019 в 06:07
поделиться

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

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

1
ответ дан 28 November 2019 в 06:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: