Какой будет результат выполнения программы:

public class BooleanTest {
   static boolean test1(int val) {
        System.out.println("test1("+ val +")");
        System.out.println("результат: " + (val < 10));
        return val < 10;
    }

    static boolean test2(int val) {
        System.out.println("test2("+ val +")");
        System.out.println("результат: " + (val < 20));
        return val < 20;
    }

    static boolean test3(int val) {
        System.out.println("test3("+ val +")");
        System.out.println("результат: " + (val < 30));
        return val < 30;
    }

    public static void main(String[] args) {
       if(test1(0) && test2(20) && test3(20))
           System.out.println("Выражение истинно");
       else
           System.out.println("Выражение ложно");
    }
}
Explanation
Оператор && вычисляет операнды слева направо до тех пор, пока не сможет однозначно определить истинность всего выражения.
Поэтому в данном примере вызываются только два метода:
test1(0) – true
test2(20) – false
а в вызове test3() уже необходимости нет, поскольку вне зависимости от его результата уже ясно, что значение всего выражения будет false.

Следи за CodeGalaxy

Мобильное приложение Beta

Get it on Google Play
Обратная Связь
Продолжайте изучать
тесты по Java
Cosmo
Зарегистрируйся сейчас
или Подпишись на будущие тесты