Главная » Java » Операторы сравнения Java

0

Язык Java предлагает стандартный набор операторов сравнения; вращают результат типа boolean.

Все операторы сравнения допускают естественное применение по отношению R простым числовым типам, аналогичное принятому в математике.

Значения с плавающей запятой подчиняются обычным правилам упорядочения (-1.0 меньше числа 0.0, котopoe, в свою очередь, меньше +?), за исключением NaN. Все операторы сравнения при использовании их по отношению к NaN всегда возвращают false, кроме оператора !=, возвращающего true. Это правило справедливо даже в том случае, когда NaN содержится в обеих частях выражения сравнения. Например, результат выражения

Double.NaN == Double.NaN

всегда равен false. Чтобы определить, равно ли выражение значению NaN, следует использовать версию статического метода isNaN из соответствующего класca-оболочки – Float.isNaN(float) или Double.isNaN(double);.

По отношению к булевым выражениям разрешено использовать только операторы == и !=, поскольку вопрос о том, что, Скажем, больше, true или false, попросту лишен смысла. Операторы равно и не равно иногда удобно использовать для построения выражения, выполняющего проверку условия логического исключающего ИЛИ (XOR). В следующем фрагменте кода метод sameSign() вызывается только в том случае, если оба операнда, X и У, имеют одинаковый знак (или оба равны нулю); в противном случае будет вызван метод differentSign():

if ((х < О) == (y < О))

 sameSign();

else

differentSign() ;

Операторы == и != допускают применение и к значениям ссылочных типов.

Выражение ref1 == ref2 равно true, если оба операнда ссылаются на один и тот же объект либо одновременно равны null (причем в последней ситуации ref1 и ref2 могут даже относиться к различным типам). В противном случае результат равен false.

 

 

 

 

8 Существует и другой способ определения того, является ли значение "не числом": если Х представляет собой NaN, тогда результат вычисления булева выражения х ! = х равен true. Это забавно, но довольно невразумительно – поэтому мы рекомендуем все-таки пользоваться соответствующими методами isNaN.

Оператор == проверяет тождественность (identity) ссылок, но не равнозначность (equivalence) объектов. Две ссылки считаются тождественными, если они указывают на один и тот же объект; два объекта трактуются как равнозначные, если они обладают одинаковым состоянием. Факт равнозначности объектов может быть проверен с помощью метода equals класса Object. Если в конкретном классе понятиям тождественности Ссылок и равнозначности объектов придан иной смысл, метод equals должен быть переопределен. (Метод Object.equals подразумевает, что объект может быть равнозначен только самому себе.) Метод equals, переопределенный в классе String, например, проверяет, обладают ли два объекта String одинаковым содержимым (за более подробными сведениями обращайтесь к разделу 9.2 на странице 227).

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии