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

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
Зареєструйся Зараз
або Підпишись на майбутні тести