Операция ?

Синтаксис Java содержит специальную тернарную операцию, которой можно заменять определенные типы операторов if-then-else. Это операция ?. Вначале она может казаться несколько непонятной, но со временем вы убедитесь в ее исключительной эффективности. Эта операция имеет следующую общую форму:

выражение1 ? выражение2 : выражениеЗ

Здесь выражение! — любое выражение, приводящее к значению типа boolean. Если значение выражения1 — true, программа вычисляет значение выражения!. В противном случае программа вычисляет значение выраженияЗ. Результат выполнения операции ? равен значению вычисленного выражения. И выражение2, и выражениеЗ должны возвращать значение одного и того же типа, которым не может быть тип void.

Ниже приведен пример применения операции ?:

ratio = denom = 0 ? 0 : num / denom;

Когда Java-программа вычисляет это выражение присваивания, вначале она проверяет выражение слева от знака вопроса. Если значение denom равно 0, программа вычисляет выражение, указанное между знаками вопроса и двоеточия, и использует вычисленное значение в качестве значения всего выражения ?. Если значение denom не равно 0, программа вычисляет выражение, указанное после двоеточия, и использует его в качестве значения всего выражения ?. Затем значение, полученное в результате выполнения операции ?, присваивается переменной ratio.

Следующий пример программы демонстрирует применение операции ?. Эта программа служит для получения абсолютного значения переменной.

// Демонстрация использования операции ?.
class Ternary {
public static void main(String args[]) {
int i, k;
i = 10;
k=i<0?-i:i;// получение абсолютного значения переменной i
System.out.print("Абсолютное значение ");
System.out.println (i + " равно " + k) ;
i = -10;
k=i<0?-i:i;// получение абсолютного значения переменной i
System.out.print("Абсолютное значение ");
System.out.println(i + " равно " + k) ;
}

Эта программа генерирует следующий вывод:

Абсолютное значение 10 равно 10
Абсолютное значение -10 равно 10




Rambler's Top100