Урок 5. Операторы в Java ( 4 часть )
Операторы быстрой оценки логических выражений (short circuit logical operators)
Существуют два интересных дополнения к набору логических операторов. Это — альтернативные версии операторов AND и OR, служащие для быстрой оценки логических выражений. Вы знаете, что если первый операнд оператора OR имеет значение true, то независимо от значения второго операнда результатом операции будет величина true. Аналогично в случае оператора AND, если первый операнд — false, то значение второго операнда на результат не влияет — он всегда будет равен false. Если вы в используете операторы &-&- и || вместо обычных форм &- и |, то Java не производит оценку правого операнда логического выражения, если ответ ясен из значения левого операнда.Общепринятой практикой является использование операторов &-&- и || практически во всех случаях оценки булевых логических выражений. Версии этих операторов &- и | применяются только в битовой арифметике.
Тернарный оператор if-then-else
Общая форма оператора if-then-use такова:
выражение1? выражение2: выражениеЗ
В качестве первого операнда — «выражение1» — может быть использовано любое выражение, результатом которого является значение типа — boolean. Если результат равен true, то выполняется оператор, заданный вторым операндом, то есть, «выражение2». Если же первый операнд paвен false, то выполняется третий операнд — «выражениеЗ». Второй и третий операнды, то есть «выражение2» и «выражениеЗ», должны возвращать значения одного типа и не должны иметь тип void.
В приведенной ниже программе этот оператор используется для проверки делителя перед выполнением операции деления. В случае нулевого делителя возвращается значение 0.
class Ternary {
public static void main(String args[]) {
int a = 42-
int b = 2-
int c = 99-
int d = 0-
int e = (b == 0) ? 0 : (a / b)-
int f = (d == 0) ? 0 : (c / d)-
System.out.println(«a = » + a)-
System.out.println(«b = » + b)-
System.out.println(«c = » + c)-
System.out.println(«d = » + d)-
System.out.println(«a / b = » + e)-
System.out.println(«c / d = » + f)-
} }
При выполнении этой программы исключительной ситуации деления на нуль не возникает и выводятся следующие результаты:
С: -\->-java Ternary
а = 42
b = 2
с = 99
d = 0
a / b = 21
с / d = 0
Приоритеты операторов
В Java действует определенный порядок, или приоритет, операций. В элементарной алгебре нас учили тому, что у умножения и деления более высокий приоритет, чем у сложения и вычитания. В программировании также приходится следить и за приоритетами операций. В таблице указаны в порядке убывания приоритеты всех операций языка Java.