Изучаем Java

Вы здесь: Главная >> Java-учебник >> Операторы отношения и логические операторы

Операторы отношения и логические операторы в языке Java


Язык Java содержит полный комплект операторов отношения. Чтобы проверить равенство, следует использовать символы = =. Например, значение выражения 3 = = 7 равно false.
Для проверки неравенства используются символы ! = .
Так, значение выражения 3 != 7 равно true.

Кроме того, в языке Java есть обычные операторы < (меньше), > (больше), <= (меньше или равно) и => (больше или равно).

Java, как и язык C++, использует символы для обозначения логического оператора "и", а также символы | | для обозначения логического оператора "или" . Как обычно, знак восклицания означает логический оператор отрицания . Операторы && и | | вычисляются по сокращенной схеме, т.е. если в ходе вычисления выражения А && В выясняется, что подвыражение А ложно, то подвыражение В не вычисляется.
Напри­мер, в выражении
х != 0 && 1/х > х+у // Не делить на 0.

вторая часть никогда не вычисляется, если значение переменной х равно нулю.

Та­ким образом, подвыражение 1/х не вычисляется, если х равно нулю и деления на нуль не происходит.

Аналогично, если оказывается, что выражение А истинно, то значение выражения А | | В автоматически становится истинным, и вычислять выражение В нет необходимости.

В языке Java есть также тернарный оператор ? :, который иногда оказывается по­лезным. Выражение

условие ? e1 : е2

означает, что если условие истинно, то вычисляется выражение e1, а если ложно — е2.

Например, выражение
х < у ? х : у

вычисляет меньшее из чисел х и y.

Побитовые операторы

Работая с любыми целочисленными типами, можно применять операторы, имею­щие дело непосредственно с битами, из которых состоят целые числа. Это значит, что для получения отдельных битов числа можно использовать технику масок.

В язы­ке Java есть следующие побитовые операторы:
S ("и") | {"или") ^ ("исключающее или") ~("не")

Эти операторы работают с битами. Например, если n — это целое число, то выражение
int fourthBitFromRight = (n & 8) /8;
равно единице, если четвертый бит справа в двоичном представлении числа n равен единице, и нуль, если нет.

Используя оператор & с соответствующей степенью двой­ки, можно замаскировать все биты, кроме одного.

Операторы & и | применяются к булевским переменным и вычисляют булевские значения.
Эти операторы аналогичны операторам && и | |, за исключением того, что побитовые операторы не вычисляются по сокращенной схеме, т.е. перед вычислением результата вычисляются оба аргумента.

В языке Java есть также операторы >> и <<, сдвигающие битовое представление числа вправо или влево. Эти операторы часто оказываются удобными, если нужно по­строить битовое представление на основе маски: int fourthBitFromRight = (n s (1 « 3)) » 3;

В языке есть даже оператор >>>, заполняющий старшие разряды нулями, в то вре­мя как оператор » приписывает знаковый бит к старшим разрядам.

Оператора <« в языке Java нет.

Аргумент, стоящий в правой части операторов побитового сдвига, сокращается по модулю 32 (если левая часть является числом типа long, правая часть сокра­щается по модулю 64).

Например, значение выражения 1«35 эквивалентно вы­ражению 1 <<3, или 8.

В языках C/C++ не фиксируется, какой сдвиг выполняет оператор >> : арифмети­ческий (вплоть до знакового бита) или логический (заполняя свободные разряды нулями).
Разработчики средств реализации языка могут выбрать тот вариант, ко­торый покажется им более эффективным. Это значит, что оператор >> в языке C/C++ в действительности лишь определяет некое неотрицательное число.

Язык Java снимает эту неопределенность.


Партнеры сайта