Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Все типы исходных данных.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
867 Кб
Скачать
☆

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

В языке 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.