
- •Тема 3. Лексические структуры языка. Примитивные типы данных. Декларация и инициализация переменных. Основные типы операторов.
- •3.1 Примитивные типы данных
- •3.2 Лексические структуры языка
- •3.2.1 Пробелы
- •3.2.2 Идентификаторы
- •3.2.3 Константы
- •3.2.4 Комментарии
- •3.2.5 Разделители
- •3.2.6 Ключевые слова Java
- •4 Операторы
- •4.1 Операция присваивания
- •4.2 Унарные операции
- •4.3 Арифметические бинарные операции
- •4.6 Операции сравнения
- •4.6.1 Логические операции
- •4.7 Условная операция
- •4.8 Приоритет операций
- •4.9 Преобразование и приведение типов при выполнении операций
- •4.10 Переполнение целого числа
- •4.11 Операции с дробными типами
- •4.12 Операция конкатенации строк
- •5 Классы-обертки
- •6 Уловки и ловушки, связанные с плавающей точкой и десятичными числами
- •6.1 Плавающая точка ieee
- •6.2 Специальные числа
- •6.3 Непредвиденные обстоятельства использования плавающей точки
- •6.4 Ошибки округления
- •6.5 Рекомендации по сравнению чисел с плавающей точкой
- •6.6 Не используйте числа с плавающей точкой для точных значений
- •6.7 Большие десятичные дроби для маленьких чисел
- •6.8 Все методы сравнения не созданы равными
- •6.9 Используйте BigDecimal в качестве типа обмена
- •6.10 Построение чисел BigDecimal
4.6 Операции сравнения
В Java определены следующие операции сравнения:
"==" (равно), "!=" (не равно),
">" (больше), ">=" (больше или равно),
"<" (меньше), "<=" (меньше или равно)
Данные операции имеют два операнда и возвращают булевское значение, соответствующее результату сравнения (false или true). Следует обратить внимание, что при сравнении двух величин на равенство в Java, как и в C и в C++, используются символы "==" (два идущих без пробела друг за другом знака равенства), в отличие от оператора присваивания, в котором используется символ "=". Использование символа "=" при сравнении двух величин либо вызывает ошибку при компиляции, либо приводит к неверному результату.
Примеры операций сравнения:
int x1 = 5, x2 = 5, x3 = 3, x4 = 7;
boolean isEqual = x1 == x2; // isEqual = true
boolean isNonEqual = x1 != x2; // isNonEqual = false
boolean isGreater = x1 > x3; // isGreater = true
boolean isGreaterOrEqual = x2 >= x3; // isGreaterOrEqual = true
boolean isLess = x3 < x1; // isLess = true
boolean isLessOrEqual = x1 <= x3; // isLessOrEqual = false
4.6.1 Логические операции
Логические операции выполняются над булевскими переменными и их результатом также является значение типа boolean. В Java определены следующие логические операции:
отрицание "!" – замена false на true, или наоборот;
операция И "&" – результат равен true, только, если оба операнда равны true, иначе результат – false;
операция ИЛИ "|" – результат равен true, только, если хотя бы один из операндов равен true, иначе результат – false.
операция исключающее ИЛИ "^" – результат равен true, только, если операнды не равны друг другу, иначе результат – false.
Операции "&", "|" и "^" можно, также как и соответствующие побитовые операции использовать в составных операциях присваивания: "&=", "|=" и "^="
Кроме того, к булевским операндам применимы операции "==" (равно) и "!=" (не равно).
Как видно из определения операций ИЛИ и И, операция ИЛИ приводит к результату true, когда первый операнд равен true, независимо от значения второго операнда, а операция И приводит к результату false, когда первый операнд равен false, независимо от значения второго операнда.
В Java определены еще две булевские операции: вторые версии булевских операций И и ИЛИ, известные как укороченные (short-circuit) логические операции: укороченное И "&&" и укороченное ИЛИ "||". При использовании этих операций второй операнд может не выполнять если его вычисление в данном случае не влияет на результат.
Примеры булевских операций:
int x = 8;
boolean isInRange = x > 0 && x < 5; // isInRange = false
boolean isValid = x > 0 || x > 5; // isValid = true
boolean isNotValid = !isValid; // isNotValid = false
boolean isEqual = isInRange == isValid; // isEqual = false
boolean isNotEqual = isInRange != isValid; // isNotEqual = true
4.7 Условная операция
Условная операция записывается в форме
выражение-1 ? выражение-2 : выражение-3
При этом сначала вычисляется выражение выражение-1, которое должно дать булевское значение, а затем, если выражение-1 имеет значение true, вычисляется и возвращается выражение-2 как результат выполнения операции, либо (если выражение-1 имеет значение false), вычисляется и, как результат выполнения операции, возвращается выражение-3.
Пример условной операции:
x = n > 1 ? 0 : 1;
Переменной x будет присвоено значение 0, если n > 1 (выражение n > 1 имеет значение true) или 1, если n ≤ 1 (выражение n > 1 имеет значение false).