Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие Java .pdf
Скачиваний:
140
Добавлен:
16.03.2015
Размер:
1.32 Mб
Скачать

instanceof возвращает true, если выражение левой части совместимо с типом, название которого указано в правой части, и false – в противном случае.

Следует заметить, что данный оператор не позволяет выяснить реальный класс, экземпляром которого является объект. С применением оператора instanceof это возможно только если заранее известна иерархия классов, но код программы при этом будет несколько специфичен.

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

Общая форма условного оператора такова:

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

Вкачестве первого операнда – <выражение1> – может быть использовано любое выражение, результатом которого является значение типа boolean. Если результат равен true, то выполняется оператор, заданный вторым операндом, то есть, <выражение2>. Если же первый операнд равен false, то выполняется третий операнд – <выражениеЗ>. Второй и третий операнды, то есть <выражение2> и <выражениеЗ>, должны возвращать значения совместимых типов и не должны иметь тип void.

Впрограмме в примере 43 тернарный оператор используется для проверки делителя перед выполнением операции деления. В случае нулевого делителя возвращается значение 0.

Пример 43. Тернарный условный оператор 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);

100

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);

}

}

При выполнении этой программы исключительной ситуации деления на ноль не возникает и выводятся следующие результаты:

а = 42 b = 2

с= 99 d = 0

a / b = 21

с/ d = 0

2.10.8 Приоритеты операторов

ВJava действует определенный порядок, или приоритет операций. В алгебре у умножения и деления более высокий приоритет, чем у сложения и вычитания. В программировании также приходится следить и за приоритетами операций. В таблице 16 указаны в порядке убывания приоритеты всех операций языка Java. Операторы, обладающие одинаковым приоритетом, указаны

впределах одной строки.

Втаблицы приведены некоторые операторы, которые не обсуждались в разделе 2.10. Круглые скобки с параметрами (params) означают вызов метода с указанием его параметров. Квадратные скобки [] используются для получения доступа к элементам массивов. Оператор . (точка) используется для выделения элементов из ссылки на объект. Круглые скобки с указанием в них типа (type) означают явное приведение типа. Оператор new предназначен для создания новых объектов.

101

Таблица 16. Группы операторов в порядке убывания приоритета

Постфиксные

[]

.

(params)

expr++

операторы

expr--

 

 

 

Унарные операторы

++expr

--expr

+expr

-expr

 

~

!

 

 

Операторы

new

(type)expr

 

создания объектов и

 

преобразования типов

 

 

 

 

Операторы

*

/

%

 

умножения, деления и

 

вычисления остатка

 

 

 

 

Операторы

+

-

 

 

сложения и вычитания

 

 

Операторы

<<

>>

>>>

 

побитового сдвига

 

Операторы сравнения

<

>

>=

<=

 

instanceof

 

 

Операторы равенства

==

!=

 

 

и неравенства

 

 

И (AND)

&

 

 

 

Исключающее ИЛИ

^

 

 

 

(XOR)

 

 

 

Включающее ИЛИ

|

 

 

 

(OR)

 

 

 

Условное И (AND)

&&

 

 

 

Условное ИЛИ (OR)

||

 

 

 

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

?:

 

 

 

Операторы

=

+=

-=

*=

присваивания

/=

%=

>>=

<<=

 

>>>=

&=

^=

|=

Также возможно использование в выражениях круглых скобок для явного указания границ выражений и урегулирования порядка их выполнения. Вы всегда можете добавить в выражение несколько пар скобок, если у вас есть сомнения по поводу порядка вычислений или вам просто хочется сделать свои код более читаемым.

Рассмотрим следующее выражение:

а >> b + 3

Какому из двух выражений, а >> (b + 3) или (а >> b) + 3, соответствует эта строка? Поскольку у оператора сложения более

102

Соседние файлы в предмете Программирование на Java