ИЛИ правда с какой-то функцией - PullRequest
0 голосов
/ 17 июня 2019

Предположим, у меня есть метод fun()

boolean fun()
{
    System.out.println("Hello World");
    return true;
}

У меня тоже есть переменная a

boolean a = true;

Теперь, если я напишу

boolean b = a || fun();

будет ли Java оценивать правую часть || или остановится (поскольку a уже true, поэтому ответ всегда будет true и, следовательно, он не оценивает правую руку сторона ||).

Ответы [ 2 ]

4 голосов
/ 17 июня 2019

См. Документацию от Oracle:

Условные операторы

&& и ||операторы выполняют операции условного И и условного ИЛИ для двух логических выражений.Эти операторы проявляют поведение «короткого замыкания», что означает, что второй операнд оценивается только при необходимости.

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html

Таким образом, Java НЕ будет оценивать fun()Выражение здесь, поскольку «короткое замыкание» a уже определяет конечное значение.

Если необходимо оценить fun(), быстрое исправление может быть следующим:

boolean b = fun() || a;

или

boolean funValue = fun();
boolean b = a || funValue;
2 голосов
/ 17 июня 2019

Java не оценит правильное выражение. То же самое касается &&, если первое выражение оценивается как false.

Это необходимо, поэтому вы можете делать такие вещи, как:

if (a != null && !a.isEmpty()) {
    //...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...