- •Логические операции
- •Операции над целыми типами
- •Арифметические операции
- •Операции сравнения
- •Операции присваивания
- •Приоритет операций
- •1. Использование массивов
- •If (логическое выражение) оператор1; [ else оператор2;]
- •2.2. Оператор break
- •2.3. Оператор switch
- •2. Управление выполнением программы
- •2.1. Условные операторы if-else
- •2.4. Оператор return
- •2.5. Циклы
- •2.5.1. Оператор цикла while
- •2.5.2. Оператор цикла do-while
- •2.5.3. Оператор цикла for
- •2.6. Оператор запятая
- •2.7. Оператор continue
- •3. Классы
- •3.1. Переменные представителей (instance variables)
- •Создание объекта класса
- •3.3. Объявление методов
- •Вызов метода
- •Скрытие переменных представителей
- •3.6. Конструкторы
- •3.7. Совмещение методов
- •3.8. Ссылка this в конструкторах
- •3.9. Наследование классов
- •3.10. Ссылка super
- •3.11. Замещение методов
- •3.12. Динамическое назначение методов
- •3.13. Директива final
- •3.14. Метод Finalize
- •3.15. Директива static
- •3.16. Директива abstract
- •4. Работа с файлами
- •Файловые потоки
- •Работа с файлами и каталогами при помощи класса File
- •Создание объекта класса File
- •4.7.2. Определение атрибутов файлов и каталогов
Операции сравнения
В языке Java шесть обычных операций сравнения целых чисел по величине:
больше >;
меньше <;
больше или равно >=;
меньше или равно <=;
равно ==;
не равно !=.
Сдвоенные символы записываются без пробелов, их нельзя переставлять местами, запись => будет неверной.
Результат сравнения будет иметь логическое значение: true для выражения 3 != 5 ; или false , например, для 3 == 5.
Для записи сложных сравнений следует использовать логические операции. Например, в вычислениях часто приходится делать проверки вида а < х < b. Подобная запись на языке Java приведет к сообщению об ошибке, поскольку первое сравнение а<х даст true или false, a Java не знает, больше это, чем b, или меньше. В данном случае следует написать выражение (а<х) && (х<b), причем здесь скобки можно опустить, написав а<х && х<b.
Во всем остальном вещественные типы — это обычные, вещественные значения, к которым применимы все арифметические операции и сравнения, перечисленные для целых типов. Характеристики вещественных типов приведены в табл. 4.
В языке Java взятие остатка*от деления %, инкремент ++ и декремент — применяются и к вещественным типам.
Таблица 4. Вещественные типы
Тип |
Разрядность |
Диапазон |
Точность |
float |
4 |
3,4е-38 < |х| < 3,4е38 |
7—8 цифр |
double |
8 |
1,7е-308<|х|<1,7е308 |
17 цифр |
Примеры определения вещественных типов:
float х = 0.001, у = -34.789;
double 21 = -16.2305, z2;
Поскольку к вещественным типам применимы все арифметические операции и сравнения, целые и вещественные значения можно смешивать в операциях. При этом правило приведения типов дополняется такими условиями:
если в операции один операнд имеет тип double, то и другой приводится к типу double;
если один операнд имеет тип float, то и другой приводится к типу float;
в противном случае действует правило приведения целых значений.
К обычным вещественным числам добавляются еще три значения»:
1.Положительная бесконечность — POSITIVE_INFINITY , которая возникает при переполнении положительного значения, например, в результате операции умножения 3.0*6е307.
2. Отрицательная бесконечность — NEGATIVE_INFINITY.
3. "Не число", записываемое константой NaN (Not a Number), которое возникает при делении вещественного числа на нуль или умножении нуля на бесконечность.
Операции присваивания
Простая операция присваивания записывается знаком равенства =, слева от которого стоит переменная, а справа выражение, совместимое с типом переменной:
х = 3.5, у = 2*(х - 0.567)/(х + 2), b = х<у, bb=х>=у&&b
Операция присваивания действует так: выражение, стоящее после знака равенства, вычисляется и приводится к типу переменной, стоящей слева от знака равенства. Результатом операции будет приведенное значение правой части.
Операция присваивания имеет еще одно побочное действие: переменная, стоящая слева, получает приведенное значение правой части, старое ее значение теряется.
В операции присваивания левая и правая части неравноправны, нельзя написать 3.5 = х. После операции х = у изменится переменная х, став равной у, а после у = х изменится у.
Кроме простой операции присваивания есть еще 11 составных операций присваивания (compound assignment operators):
+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>= ; >>>=
Все составные операции действуют по одной схеме:
х ор= а эквивалентно х = (тип х), т. е. (х ор а).
Предположим, что переменная ind типа short определена со значением 1. Присваивание ind +=7.8 даст в результате число 8, то же значение получит и переменная ind. Эта операция эквивалентна простой операции присваивания ind=(short)(ind+7.8).
Перед присваиванием, при необходимости, автоматически производится приведение типа. Поэтому:
byte b = 1;
b = b + 10; // Ошибка!
b += 10; // Правильно!
Перед сложением b + 10 происходит повышение b до типа int, результат сложения тоже будет типа int и, в первом случае, не может быть присвоен переменной b без явного приведения типа. Во втором случае перед присваиванием произойдет сужение результата сложения до типа byte.
