Java - Операторы
Primary tabs
Forums:
Арифметические операции
Рассмотрим 12-ть арифметических операций сразу в виде кода -
для понимания результатов очень полезным оказывается предыдущая наша заметка о повышении типа
в выражениях.
Итак, операции:
int a = 5, b = 4, c; // целые float z = 1; // дробное значение // будем считать, что каждая из последующих строк // является первой после объявления переменной - и // предыдущих операций над теми же самыми переменными // не производилось c = a + b; //(1) = 9 (умножение) c = a - b; //(2) = 1 (вычитание = разность) c = a * b; //(3) = 20 (произведение) z = z * a / b; //(4) = 1.25 (обычное деление) b = b % a; //(5) = 4 (деление по модулю = получение остатка от деления) b++; // (6) = 5 (икремент) b--; // (7) = 3 (декремент) // Далее так называемые "составные арифметические операторы" - // то есть такие где арифметическая операция совмещена с операцией присваивания b += a; // (8) = 9 (сложение с присваиванием) b -= a; // (9) = -1 (вычитание с присваиванием) b *= a; // (10) = 20 (вычитание с присваиванием) b /= a; // (11) = 0 (деление с присваиванием) z /= a; // (11) = 0.2 (деление с присваиванием) b %= a; //(12) = 4 (деление по модулю с присваиванием)
Примечания:
- мы получаем ноль в 11-ой операции (первый пример для деления) в силу неявного преобразования типа
- следует помнить, что операндами арифметических операций могут быть исключительно переменные числового типа и также символьный тип char, который в Яве является разновидностью типа int (целочисленным типом).
Префиксная и постфиксная форма инкремента и декремента
Инкремент и декримент в природе существуют в двух формах -
давайте просто изучим такой "код":
int a = 5, b = 4; // (постфикс) сначала произойдёт присваивание, // а только потом наращивание переменной b a = b++; // a == 4 b == 5 // (префикс) сначала произойдёт наращивание b, // а затем присваивание этого значения переменной 'a' a = ++b; // a == 5 b == 5 // но если унарный оператор применён "сам по себе" - // то префиксная форма ничем приципиально // от постфиксной не отличается: a++; // == 6 ++a; // == 6
Побитовые операторы
Java представляет также удобные средства - ряд "общепринятых" операций для обитовой обработки операндов
(то есть такой при которой данные рассматриваются именно как число в двоичной форме).
Важно о представлении целых чисел в Java.
// Сдвиг числа вправо на два знака: int a = 32; // ==32 a = a >> 2; // ==8 //1 0 0 0 0 0 | //_ _ 1 0 0 0 | 00
мы поговорим об этих операциях позже -
а пока что перейдём к операторам сравнения.
Операторы сравнения
/*Два оператора сравнения применимы к любым типам:*/ == // равно != // не равно //Далее 4=ре оператора упорядочивания //которые применимы только к числовым типам //(целые, char и числа с плавающей точкой) > // больше < // меньше >= // больше либо равно <= // меньше либо равно //Результат оператора сравнения //представляет собой результат логического типа: int a = 5, b = 4, c = 5; boolean f = b > a; // ==false boolean t = a == c; // ==true
Чаще всего эти операторы используются совместно с управляющим оператором if и в заголовках (операторах) циклов разных видов,
но выше мы видели и "лихой" пример присваивания значения переменной логического типа без всякого там цикла или условного оператора.
Логические операторы
Пожалуй, единственным "не всем известным" по смыслу является оператор "исключающего ИЛИ":
boolean a = true, b = false; //(1) И (AND) a = a & b; // == false //(2) ИЛИ (OR) a = a | b; // == true //(3) исключающее ИЛИ (XOR) = сложение по модулю 2: a = a ^ b; // == true //(4) Сокращённое И: a = a && b; // == false //(5) Сокращённое ИЛИ: a = a || b; // == true //(6) НЕ (унарный оператор): a = !a; // == false; //(7) И с присваиваниме: a &= b; // == false; //(8) ИЛИ с присваиванием: a |= b; // == true; //(9) XOR с присваиванием: a ^= b; // == true; // (10) троичный условный оператор: b = a ? false : true; // == false получим значение обратное 'a' // последнее также в данной ситуации эквивалентно: b = !a; // == false
- Log in to post comments
- 4108 reads