Как работает if для булевого значения

388
07 января 2017, 13:11
boolean example[] = { true, false, false, true, true };
for (int i = 0; i < 5; i++) {
    if (example[i]) {
        System.out.println("true");
    } else {
        System.out.println("false");
    }
}

Почему выводит результат true,false,false,true,true? По какой логике?
Я так понимаю, if (example[i]) означает, что если данный элемент равен любому значению, то вывести true. Тогда почему результат не true,true,true,true,true?

Answer 1

Массив example содержит булевы переменные.

Оператор if вычисляет результат в скобках на истина\ложь и в зависимости от того, получится в итоге вычислений true или false, выполняет одну из веток: сразу после скобок или после оператора else

Так как в вашем массиве уже булевы переменные, то вычисления на истина\ложь для них не требуется: аргумент условия уже содержит булево значение, которое оператор if может обработать напрямую.

В итоге, если развернуть ваш код, получится такое:

if (true) .. выполнить часть после скобок
if(false) ..  выполнить часть после else
if(false) ..   выполнить часть после else
if(true) ..  выполнить часть после скобок
if(true) ..  выполнить часть после скобок

Сама конструкция if - else читается следующим образом:

Если (что-то истинно) {выполнить это} иначе {выполнить это}
READ ALSO
Как правильно использовать mock из Mockito

Как правильно использовать mock из Mockito

Есть класс который я хочу протестировать, но когда я использую mock у меня не получается нормальной замены, то есть результирующий метод в классе...

373
Как правильно поменять сцену в живых обоях

Как правильно поменять сцену в живых обоях

Как сделать так, чтобы при изменении настроек, сцены менялись и работали без проблем?

303
Как растянуть блок на всю высоту страницы?

Как растянуть блок на всю высоту страницы?

Вопрос по CSSЗадача: есть высокий блок-контейнер, он по высоте не помещается на один экран (например, div, в котором много параграфов), надо задать...

427
Как сделать чтобы красный блок шел после картинки , а не на ней

Как сделать чтобы красный блок шел после картинки , а не на ней

Красный блок лежит на картинке и не могу его опустить

320