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

Глава 4. Операции 87_

фиксной форме, где они предшествуют операнду. В предыдущих примерах нет никакого различия между префиксными и постфиксными формами. Однако, когда инкрементная и/или декрементная операции — часть боль­шего выражения, тогда появляется тонкое, но все же существенное, разли­чие между этими двумя формами. В префиксной форме операнд инкремен-тируется или декрементируется прежде, чем значение используется в выра­жении. В постфиксной форме предыдущее значение сначала используется в выражении и только потом операнд изменяется. Например:

х = 42; у = ++х;

В этом случае в у устанавливается значение 43, потому что инкремент вы­полняется прежде, чем х назначается переменной у. Таким образом, строка у = ++х; является эквивалентом следующих двух операторов:

х = х + 1;

у = х;

Однако, если записать так:

х = 42;

у = х++;

значение х присваивается переменной у перед тем, как выполняется опера­ция инкремента, так что значение у равно 42. Конечно, в обоих случаях в х устанавливается значение 43. Здесь строка у = х++; является эквивалентом двух следующих операторов:

У = х;

X = X + 1;

Рассмотрим программу, демонстрирующую операцию инкремента:

// Демонстрирует ++. class IncDec {

public static void main(String argsf]) {

int a = 1;

int b = 2;

int c;

int d;

с = ++b;

d = a++;

с++;

System.out.println("a = " + a);

System.out.println("b = " + b);

System.out.println("c = " + c);

88_ Часть I. Язык Java

System.out.println("d = " + d) ; } }

Вывод этой программы:

а = 2

Ь = 3

с = 4

d = 1

Поразрядные операции

В Java определено несколько поразрядных (bitwise) операций, которые могут применяться к целым типам long, int, short, char и byte. Эти операции действуют на индивидуальные биты1 их операндов. Они подытожены в табл. 4.2.

Таблица 4.2. Поразрядные операции Java

Операция Результат

Поразрядное унарное отрицание (bitwise unary NOT) & Поразрядное И (bitwise AND) I Поразрядное ИЛИ (bitwise OR) " Поразрядное исключающее ИЛИ (bitwise exclusive OR (XOR)) » Сдвиг вправо (Shift right) »> Сдвиг вправо с заполнением старшего бита нулем (Shift right zero fill) « Сдвиг влево (Shift left) &= Присваивание с поразрядным И (bitwise AND assignment) ! = Присваивание с поразрядным ИЛИ (bitwise OR assignment)

А= Присваивание с поразрядным исключающим ИЛИ (bitwise exclusive OR (XOR) assignment)

»= Присваивание со сдвигом вправо (Shift right assignment)

>»= Присваивание со сдвигом вправо и заполнением старшего бита нулем (Shift right zero fill assignment)

«= Присваивание со сдвигом влево (Shift left assignment)

1 Поэтому их часто называют битовыми. — Примеч. пер.

Соседние файлы в папке JavaLit