Существует несколько бинарных логических операторов и один унарный. В качестве аргументов для всех этих операторов выступают логические литералы (константы), логические переменные и выражения, имеющие логическое значение.
Операторы:
! — «отрицание», унарный оператор, меняет значение на противоположное (инвертирует: ложь превращает в истину, а истину — в ложь).
&& — логическое «и» («конъюнкция», «пересечение»), бинарная операция, возвращает истинное значение тогда и только тогда, когда оба операнда истины.
|| — логическое «или» («дизъюнкция», «объединение»), бинарная операция, возвращает истинное значение, когда хотя бы один из операндов истинный.
У логических операторов следующий приоритет: отрицание, конъюнкция, дизъюнкция.
Также как и в случае с арифметическими операторами для коррекции приоритета используются круглые скобки. Если одна пара скобок вложена в другую пару скобок, то сначала вычисляется значение во внутренних скобках.
Примеры:
boolean a = true; boolean b; b = a || true; // b истинно b = !b; // b ложно System.out.println(b); // выведет false a = a || b; // a истинно boolean c; c = a && (a||b); //с истинно System.out.println(c); // выведет true
В Java логический и числовые типы нельзя преобразовывать друг к другу.
Большинство операторов сравнения применимы к числовым значениям. Всё это бинарные операторы, имеющие два числовых аргумента, но возвращающие логическое значение.
> — оператор «больше».
>= — оператор «больше или равно».
< — оператор «меньше».
<= — оператор «меньше или равно».
!= — оператор «не равно».
== — оператор эквивалентности (равенства).
Последние два оператора могут применяться не только для числовых значений, но и, например, для логических.
Примеры:
boolean m; m = 5 >= 4; // истина m = 5 != 5 || false; // ложь boolean w; w = m == false; // истина System.out.println(w); // выведет true
Очень важно не путать оператор эквивалентности с операцией присваивания.
В выражениях, где встречаются операторы разных типов, сначала выполняются арифметические операции, затем операции сравнения, затем логические операции и в последнюю очередь присваивание.
Оператор if обеспечивает выполнение
или пропуск инструкции в зависимости
от указанного логического условия. Если
условие
истинно, то
инструкция
выполняется.
if (условие) инструкция;
На месте инструкции может быть как обычная инструкция (одна команда), так и составная инструкция (блок содержащий несколько команд, в том числе, другие условные операторы).
Примеры (если в качестве значений переменных будет указан нуль, то деление не будет производиться и его результат не станет выводиться на экран):
// Пример 1 int a = 25; if (a != 0) System.out.println( 100/a ); // Пример 2 int b = 25; if (b != 0) { System.out.println( 100/b ); }
Не смотря на то, что код в первом примере выглядит компактнее, только во втором примере можно было бы выполнить несколько инструкций в случае истинности условия.
У оператора if существует формат с дополнительной частью else:
if (условие) инструкция1; else инструкция2;
В случае истинности условия
выполняется простая или составная
инструкция1
, а в случае
ложности простая или составная
инструкция2
.
Пример:
int a = 0; if (a != 0) System.out.println( 100/a ); else System.out.println("На нуль делить нельзя");
Создать программу, проверяющую и cообщающую на экран, является ли целое число записанное в переменную n, чётным либо нечётным.
Создать программу, выводящую на экран ближайшее к 10 из двух чисел, записанных в переменные m и n. Например, среди чисел 8,5 и 11,45 ближайшее к десяти 11,45.
В три переменные a, b и c записаны три вещественных числа. Создать программу, которая будет находить и выводить на экран вещественные корни квадратного уравнения ax²+bx+c=0, либо сообщать, что корней нет.