Логические операции

В Java есть три логических оператора, которые могут использоваться в логических (возвращающих значение типа boolean) выражениях:

&& логическое И

|| логическое ИЛИ

! логическое НЕ (унарный оператор)

Приоритет оператора И выше, чем оператора ИЛИ, поэтому

a || b && c ≡ a || ( b && c )

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

Логические операции в Java выполняются по так называемому правилу короткого замыкания, которое означает, что второй операнд будет вычисляться только в случае необходимости.

Это крайне полезно в том случае, когда часть выражения не может быть вычислена (выдает ошибку), если другая часть выражения не равна true. Например, пусть в нашей агентной модели есть коллекция мест destinations, которые должен посетить агент. Чтобы проверить, не должен ли агент первым делом посетить Лондон, можно написать:


Здесь мы вначале проверяем, существует ли список пунктов назначения (не равен ли он null), затем, если он существует, проверяем, содержит ли он хотя бы один элемент (больше ли его размер нуля), и если да, то сравниваем этот элемент со строкой "London".