Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3 - Лексические структуры языка. Типы данных. И...docx
Скачиваний:
9
Добавлен:
19.11.2019
Размер:
93.32 Кб
Скачать

4.1 Операция присваивания

Присвоение переменной значения константы, другой переменной или выражения (переменных и/или констант, разделенных знаками операций), называется операцией присваивания и обозначается знаком "=", например:

x = 3; y = x; z = x;

В Java допустимо многократное использование операции присваивания в одном выражении, например:

x1 = x2 = x3 = 0;

Эта операция выполняется справа налево, т.е. сначала переменной x3 присваивается значение 0, затем переменной x2 присваивается значение переменной x3 (0), и, наконец, переменной x1 присваивается значение переменной x2 (0).

4.2 Унарные операции

Знаки операций, аргументами которых являются числа, разделяются на две категории: унарные (unary) знаки операций с одним аргументом и бинарные (binary) с двумя аргументами.

Примеры унарных операций "+" и "-":

int i = 3;

int j = -i; // j = -3

int k = +i; // k = 3

Пример операции побитового дополнения:

int a = 15;

int b = ~a; // b = -16

Числа a и b являются числами типа int, т.е. представляются внутри компьютера как двоичные целые числа со знаком длиной 32 бита, поэтому двоичное представление чисел a и b будет выглядеть следующим образом:

a = 00000000 00000000 00000000 00001111

b = 11111111 11111111 11111111 11110000

Как видно из этого представления, все нулевые биты в числе a изменены на единичные биты в числе b, а единичные биты в a изменены на нулевые биты. Десятичным представлением числа b будет –16.

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

int x = 1, y, z;

y = ++x; // y = 2, x = 2

z = x++; // z = 1, x = 3

Следует отметить, что в Java, в отличие от языка C, операции декремента и инкремента могут применяться и к вещественным переменным (типа float и double).

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

4.3 Арифметические бинарные операции

Операция % возвращает остаток от деления первого числа на второе, причем результат будет иметь тот же знак, что и делимое, например, результат операции 5%3 будет равен 2, а результат операции (-7)%(-4) будет равен -3. В Java операция может использоваться и для вещественных переменных (типа float или double).

Примеры бинарных арифметических операций:

int x = 7;

int x1 = x +10; // x1 = 17

int x2 = x – 8; // x2 = -1

int x3 = x2 * x; // x3 = -7

int x4 = x / 4; // x4 = 1 (при делении целых чисел дробная часть отбрасывается)

int x5 = x % 4 // x5 = 3 (остаток от деления 7 на 4)

4.4 Побитовые операции

Побитовые операции рассматривают исходные числовые значения как поля битов.

4.4.1 Побитовое И

int x = 112; // x: 00000000 00000000 00000000 01110000

int y = 94; // y: 00000000 00000000 00000000 01011110

int z = x & y; // z = 80: 00000000 00000000 00000000 01010000

4.4.2 Побитовое ИЛИ

int x = 112; // x: 00000000 00000000 00000000 01110000

int y = 94; // y: 00000000 00000000 00000000 01011110

int z =x | y; // z = 126: 00000000 00000000 00000000 01111110

4.4.3 Побитовое исключающее ИЛИ

int x = 112; // x: 00000000 00000000 00000000 01110000

int y = 94; // y: 00000000 00000000 00000000 01011110

int z = x ^ y; // z = 46: 00000000 00000000 00000000 00101110

4.4.4 Сдвиг влево с учетом знака

int x = 31; // x: 00000000 00000000 00000000 00011111

int z = x << 2; // z = 124: 00000000 00000000 00000000 01111100

4.4.5 Сдвиг вправо с учетом знака

int x = -17; // x: 11111111 11111111 11111111 11101111

int z = x >> 2; // z = -5: 11111111 11111111 11111111 11111011

4.4.6 Сдвиг вправо без учета знака

int x = -17; // x: 11111111 11111111 11111111 11101111

int z = x >>> 2; // z = 1073741819 или 00111111 11111111 11111111 11111011

4.5 Комбинированные операции

В Java для бинарных арифметических операций можно использовать комбинированные (составные) знаки операций:

идентификатор операция = выражение

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

идентификатор = идентификатор операция выражение

Примеры:

1. Выражение x += b означает x = x + b.

2. Выражение x -= b означает x = x - b.

3. Выражение x *= b означает x = x * b.

4. Выражение x /= b означает x = x / b.

5. Выражение x %= b означает x = x % b.

6. Выражение x &= b означает x = x & b.

7. Выражение x |= b означает x = x | b.

8. Выражение x ^= b означает x = x ^ b.

9. Выражение x <<= b означает x = x << b.

10. Выражение x >>= b означает x = x >> b.

11. Выражение x >>>= b означает x = x >>> b.