Оператори відносини і умовний оператор

У Java є стандартний набір операторів відносини і умовних операторів:

> більше

> = Більше або дорівнює

< менше

<= Менше або дорівнює

== Одно

! = Не дорівнює

Всі ці оператори повертають логічні значення Унарний оператор інвертує логічну величину, і, отже, true – це те ж саме, що і false Перевірка логічних величин зазвичай проводиться безпосередньо – якщо x і y відносяться до логічного типу, то вважається більш витонченим написати

if (x || y) {

// ..

}

ніж

if (x == true || y == false) {

// ..

}

Результати логічних операцій можуть обєднуватися за допомогою операторів && і | |, які означають логічне І і логічне АБО відповідно По можливості ці оператори намагаються обійтися без обчислення свого другого операнда Наприклад:

if (w && x) {/ / зовнішнє якщо if (y | | z) {/ / внутрішнє якщо

/ / .. / / Тіло внутрішнього якщо

}

}

Внутрішнє якщо виконується лише в тому випадку, якщо обидва значення (w і x) рівні true Якщо w одно false, то Java не стане обчислювати x Тіло внутрішнього якщо виконується, якщо хоча б одне із значень, y або z, одно true Якщо y одно true, то Java не обчислює z

Це правило часто використовується в багатьох програмах на Java для забезпечення правильності або ефективності роботи Наприклад, даний метод робить безпечним наступний фрагмент:

if (ix &gt&gt= 0 &amp&amp ix &lt&lt arraylength &amp&amp array[ix] = 0) {

// ..

}

Спочатку виконується перевірка діапазону – тільки в тому випадку, якщо змінна x лежить в допустимих межах, вона буде використана для доступу до елементу масиву array

З логічними значеннями використовуються тільки оператори рівності == і =, Оскільки питання про те, що більше – true або false – є безглуздим

Дана обставина може використовуватися для імітації логічного виключає АБО. У наведеному нижче фрагменті метод sameSign буде виконуватися лише в тому випадку, якщо x і y мають однаковий знак (Або одночасно дорівнюють нулю), в іншому випадку виконується differentSign:

differentSign:

if (x &lt&lt 0 == y &lt&lt 0)

sameSign() else differentSign()

Значення з плаваючою точкою підкоряються стандартному впорядкування (-10 менше

00, яке, в свою чергу, менше позитивної нескінченності), за винятком аномального значення NaN Всі оператори відносини, які порівнюють NaN з числом, завжди повертають false, крім оператора =, Який завжди повертає true Дане твердження залишається істинним, навіть якщо обидва операнда дорівнюють NaN Наприклад, значення виразу:

DoubleNaN == DoubleNaN

завжди дорівнює false Щоб перевірити, чи є деяке значення NaN, використовуйте спеціальні засоби, які визначають на рівні типу: статичні методи FloatisNaN (float) і DoubleisNaN (Double)

Дві посилання на обєкт завжди можуть перевірятися на рівність Вираз ref1 == ref2 одно true, якщо обидва посилання вказують на один і той же обєкт або обидві вони рівні null, навіть якщо посилання відносяться до різних оголошеним типам В іншому випадку повертається false

З обєктами String оператори рівності працюють не так, як можна було б очікувати Для заданих обєктів str1 і str2, що відносяться до типу String, вираз str1 == str2 перевіряє, чи вказують ці два посилання на один і той же обєкт String Воно НЕ перевіряє, чи співпадає вміст цих рядків Рівність вмісту визначається методом Stringequals, описаним в розділі 8

Джерело: Арнольд К, Гослінг Д – Мова програмування Java (1997)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*