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

Условный оператор полезен в тех случаях, когда вам нужно использовать в выражении одно из двух различных значений, в зависимости от того, выполняется ли заданное условие. Это тернарный оператор, т.е. у него три операнда:

<условие> ? <значение, если условие выполняется (true)> : <значение, если условие не выполняется (false)>

Он может применяться к значениям различных типов: численным, логическим, строковым, объектам любых классов. Следующее выражение возвращает 0, если портфель невыполненных заказов не содержит ни одного заказа, и объем первого заказа в противном случае:

backlog.isEmpty() ? 0 : backlog.getFirst().amount

Условные операторы могут быть вложенными. Например, следующая строка кода распечатывает уровень дохода человека (Высокий, Средний или Низкий), определяемый согласно значению переменной income:

traceln( "Доход: " + ( income > 10000 ? "Высокий" : ( income < 1500 ? "Низкий" : "Средний" ) ) );

Эта единственная строка эквивалентна следующей комбинации операторов if:

trace( "Доход: " );
if( income > 10000 ) {
traceln( "Высокий" );
} else if( income < 1500 ) {
traceln( "Низкий" );
} else {
traceln( "Средний" );
}