Условен оператор на Java

Условен оператор,. връща една от двете стойности в зависимост от

резултатът от проверката на дадения булев израз. Например изразът

стойност = (userSetlt ? usersValue: defaultValue); е еквивалентен на следната конструкция:

стойност = потребителска стойност; друго

Основната разлика между условния оператор if и оператора ?: е, че последният връща стойност и следователно може да се използва като операнди на други изрази. Използването на условен оператор често може значително да намали количеството код, но програмистите не могат да се споразумеят дали такъв код става по-разбираем. Ние, например, използваме както една конструкция, така и друга, в зависимост от това коя от тях изглежда по-подходяща в конкретни условия. Дали да поставим оператора или неговите аргументи в скоби – отговорът на този въпрос е двусмислен и зависи от стила на работа и личните предпочитания на програмиста. Формално, скобите не са задължителни.

Вторият и третият аргумент на оператора ?: (т.е. върнатите от него) трябва да са от съвместими типове. Типът на един операнд трябва да позволява присвояване на стойностите на другия операнд без необходимост от изрично преобразуване на типа — независимо кой от двата типа може да бъде присвоен на другия. Резултатът от операция е от по-общия от двата вида. Например в израза

двойна скала = (halvelt ? 1 : 0,5);

един от върнатите операнди е от тип int(1), а другият е от тип double(0.5). Двойните променливи позволяват присвояване на int стойности, така че 1 се преобразува в 1.0, т.е. резултатът от израза ще бъде двойна стойност. Това правило е вярно и за референтни типове, ако променливите на one, "more"базов тип е разрешено да присвоява стойности от друг тип. Ако нито една от двете възможни операции за присвояване не е осъществима, изразът се счита за невалиден.

Поради формата си, условният оператор си е спечелил допълнително име -въпрос-двоеточие.И накрая, уникалността на условния оператор се дължи и на факта, че той е единственияттернарен(троичен) оператор (оператор с три аргумента) в езика Java.

Източник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дейвид. Език за програмиране Java. 3-то изд.: Пер. от английски. - М .: Издателство "Уилям", 2001. - 624 с. : аз ще. - Парал. синигер. английски