Polytech-soft.com

ПК журнал
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Java or operator

Логические операторы

Логические операторы работают только с операндами типа boolean. Все логические операторы с двумя операндами объединяют два логических значения, образуя результирующее логическое значения. Не путайте с побитовыми логическими операторами.

Таблица логических операторов в Java

ОператорОписание
&Логическое AND (И)
&&Сокращённое AND
|Логическое OR (ИЛИ)
||Сокращённое OR
^Логическое XOR (исключающее OR (ИЛИ))
!Логическое унарное NOT (НЕ)
&=AND с присваиванием
|=OR с присваиванием
^=XOR с присваиванием
==Равно
!=Не равно
?:Тернарный (троичный) условный оператор

Логические операторы &, |, ^ действуют применительно к значениям типа boolean точно так же, как и по отношению к битам целочисленных значений. Логический оператор ! инвертирует (меняет на противоположный) булево состояние: !true == false и !false == true.

Таблица. Результаты выполнения логических операторов

ABA | BA & BA ^ B!A
falsefalsefalsefalsefalsetrue
truefalsetruefalsetruefalse
falsetruetruefalsetruetrue
truetruetruetruefalsefalse

Сокращённые логические операторы

Кроме стандартных операторов AND (&) и OR (|) существуют сокращённые операторы && и ||.

Если взглянуть на таблицу, то видно, что результат выполнения оператора OR равен true, когда значение операнда A равно true, независимо от значения операнда B. Аналогично, результат выполнения оператора AND равен false, когда значение операнда A равно false, независимо от значения операнда B. Получается, что нам не нужно вычислять значение второго операнда, если результат можно определить уже по первому операнду. Это становится удобным в тех случаях, когда значение правого операнда зависит от значения левого.

Рассмотрим следующий пример. Допустим, мы ввели правило — кормить или не кормить кота в зависимости от числа пойманных мышек в неделю. Причём число мышек зависит от веса кота. Чем больше кот, тем больше он должен поймать мышей.

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

Теперь возьмём крайний случай. Кот обленился и не поймал ни одной мышки. Значение переменной mouse будет равно 0, а в выражении есть оператор деления. А делить на 0 нельзя и наша программа закроется с ошибкой. Казалось бы, мы предусмотрели вариант с 0, но Java вычисляет оба выражения mouse != 0 и weight / mouse Реклама

Логические операторы

Логические операторы языка Java выполняются только с операндами типа boolean .

Следующая таблица перечисляет логические операторы языка Java:

ОперацияОписание
&Логическая операция И (AND) или конъюнкция
|Логическая операция ИЛИ (OR) или дизъюнкция
^Логическая операция исключающее ИЛИ (XOR)
!Логическая унарная операция НЕ (NOT)
||Укороченная логическая операция ИЛИ (short-circuit)
&&Укороченная логическая операция И (short-circuit)
==Равенство
!=Неравенство
&=Логическая операция И с присваиванием
|=Логическая операция ИЛИ с присваиванием
^=Логическая операция исключающее ИЛИ с присваиванием

1. Логические операторы OR, AND, XOR, NOT.

Начнем с операций OR(|), AND(&), XOR(^), NOT(!). Операторы OR, AND, XOR являются бинарными — они требуют два оператора. NOT — это унарный оператор, только один оператор участвует в операции. Результаты выполнения этих логических операций представлены в следующей таблице:

ABA|BA&B
A^B
!A
falsefalsefalsefalsefalsetrue
truefalsetruefalsetruefalse
falsetruetruefalsetruetrue
truetruetruetruefalsefalse

OR (|) — результат будет true , если хотя бы одно значение равно true . Пример: для того, чтобы забрать ребенка из садика, должна прийти либо мать, либо отец, либо оба — в любом случае результат будет положительный. Если же никто не придет, ребенка не заберут — результат будет отрицательный.

AND (&) — результат будет true , только если и A, и B равны true . Пример: для того чтобы свадьба состоялась, и невеста (A) и жених (B) должны явиться на бракосочетание, иначе оно не состоится.

XOR (^) — результат будет true , только если или A равно true , или В равно true . Пример: у двух друзей на двоих один велосипед, поездка на велосипеде состоится только если один из них поедет на нем. Вдвоем они ехать не могут.

NOT (!) — инвертирование значения. Если значение было true, то станет false , и наоборот.

Рассмотрим пример использования логических операторов:

2. Укороченные логические операторы (short-circuit).

Чаще всего в языке Java используются так называемые укороченные логические операторы (short-circuit):

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

Читать еще:  Больше или равно java

В формальной спецификации языка Java укороченные логические операции называются условными.

В следующем примере правый операнд логического выражения вычисляться не будет, так как условие d!=0 не выполняется и нет смысла дальше вычислять это выражение:

Если же логическое выражение переписать как d != 0 & num / d > 10 , то правое выражение вычисляться будет. И в этом случае программа выбросит исключение времени выполнения с сообщением — на ноль делить нельзя.

Если нам надо сравнить возможный диапазон значений для какой-то переменной, например — a такое условие разбивается на два: a :

3. Операции ==, !=.

Здесь все просто — чтобы сравнить два значения типа boolean , можно использовать знаки == (проверка на равенство) и != (проверка на неравенство):

4. Операции с присваиванием.

Также существуют операции с присваиванием для AND, OR, XOR. Посмотрим пример:

9. Java — Основные операторы языка

Java предоставляет богатый набор операторов для управления переменными. Все операторы Java можно разделить на следующие группы:

  • арифметические операторы;
  • операторы сравнения;
  • побитовые операторы;
  • логические операторы;
  • операторы присваивания;
  • прочие операторы.

Содержание

Арифметические операторы

Арифметические операторы — используются в математических выражениях таким же образом, как они используются в алгебре. Предположим, целая переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены арифметические операторы в Java:

ОператорОписаниеПример
+Складывает значения по обе стороны от оператораA + B даст 30
Вычитает правый операнд из левого операндаA — B даст -10
*Умножает значения по обе стороны от оператораA * B даст 200
/Оператор деления делит левый операнд на правый операндB / A даст 2
%Делит левый операнд на правый операнд и возвращает остатокB % A даст 0
++Инкремент — увеличивает значение операнда на 1B++ даст 21
Декремент — уменьшает значение операнда на 1B— даст 19

Пример

Следующий простой пример показывает программно арифметические операторы. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

Это произведет следующий результат:

Операторы сравнения

Есть следующие операторы сравнения, поддерживаемые на языке Java. Предположим, переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены реляционные операторы или операторы сравнения в Java:

ОператорОписаниеПример
==Проверяет, равны или нет значения двух операндов, если да, то условие становится истинным(A == B) — не верны
!=Проверяет, равны или нет значения двух операндов, если значения не равны, то условие становится истинным(A != B) — значение истинна
>Проверяет, является ли значение левого операнда больше, чем значение правого операнда, если да, то условие становится истинным(A > B) — не верны
=Проверяет, является ли значение левого операнда больше или равно значению правого операнда, если да, то условие становится истинным(A >= B) — значение не верны
> (сдвиг вправо)Бинарный оператор сдвига вправо. Значение правых операндов перемещается вправо на количество бит, заданных левых операндом.A >> 2 даст 15, который является 1111
>>> (нулевой сдвиг вправо)Нулевой оператор сдвига вправо. Значение левых операндов перемещается вправо на количество бит, заданных правым операндом, а сдвинутые значения заполняются нулями.A >>> 2 даст 15, который является 0000 1111

Пример

Следующий простой пример показывает, программно побитовые операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

Будет получен следующий результат:

Логические операторы

Предположим, логическая переменная A имеет значение true, а переменная B хранит false. В следующей таблице перечислены логические операторы в Java:

ОператорОписаниеПример
&&Называется логический оператор «И». Если оба операнда являются не равны нулю, то условие становится истинным(A && B) — значение false
||Называется логический оператор «ИЛИ». Если любой из двух операндов не равен нулю, то условие становится истинным(A || B) — значение true
!Называется логический оператор «НЕ». Использование меняет логическое состояние своего операнда. Если условие имеет значение true, то оператор логического «НЕ» будет делать false!(A && B) — значение true

Пример

Следующий простой пример показывает, программно логические операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

Это произведет следующий результат:

Операторы присваивания

Существуют следующие операторы присваивания, поддерживаемые языком Java:

ОператорОписаниеПример
=Простой оператор присваивания, присваивает значения из правой стороны операндов к левому операндуC = A + B, присвоит значение A + B в C
+=Оператор присваивания «Добавления», он присваивает левому операнду значения правогоC += A, эквивалентно C = C + A
-=Оператор присваивания «Вычитания», он вычитает из правого операнда левый операндC -= A, эквивалентно C = C — A
*=Оператор присваивания «Умножение», он умножает правый операнд на левый операндC * = A эквивалентно C = C * A
/=Оператор присваивания «Деление», он делит левый операнд на правый операндC /= A эквивалентно C = C / A
%=Оператор присваивания «Модуль», он принимает модуль, с помощью двух операндов и присваивает его результат левому операндуC %= A, эквивалентно C = C % A
>=Оператор присваивания «Сдвиг вправо»C >>= 2, это как C = C >> 2
&=Оператор присваивания побитового «И» («AND»)C &= 2, это как C = C & 2
^=Оператор присваивания побитового исключающего «ИЛИ» («XOR»)C ^= 2, это как C = C ^ 2
|=Оператор присваивания побитового «ИЛИ» («OR»)C |= 2, это как C = C | 2
Читать еще:  Java 8 update 161 что это

Пример

Следующий простой пример показывает, программно логические операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

Будет получен следующий результат:

Прочие операторы

Есть несколько других операторов, поддерживаемых языком Java.

Тернарный оператор или условный оператор (?:)

Тернарный оператор — оператор, который состоит из трех операндов и используется для оценки выражений типа boolean. Тернарный оператор в Java также известен как условный оператор. Этот. Цель тернарного оператора или условного оператора заключается в том, чтобы решить, какое значение должно быть присвоено переменной. Оператор записывается в виде:

Пример

Ниже приведен пример:

Будет получен следующий результат:

Оператор instanceof

Оператор instanceof — проверяет, является ли объект определенного типа (типа класса или типа интерфейса) и используется только для переменных ссылочного объекта. Оператор instanceof записывается в виде:

Примеры

Если переменная ссылочного объекта в левой части оператора проходит проверку для класса/типа интерфейса на правой стороне, результатом будет значение true. Ниже приведен пример и описание оператора instanceof:

Будет получен следующий результат:

Этот оператор по-прежнему будет возвращать значение true, если сравниваемый объект является совместимым с типом на право назначения. Ниже приводится еще один пример:

Будет получен следующий результат:

Приоритет операторов в Java

Приоритет операторов определяет группирование терминов в выражении. Это влияет как вычисляется выражение. Некоторые операторы имеют более высокий приоритет, чем другие; например оператор умножения имеет более высокий приоритет, чем оператор сложения:

Например, x = 7 + 3 * 2. Здесь x присваивается значение 13, не 20, потому что оператор «*» имеет более высокий приоритет, чем «+», так что сначала перемножается «3 * 2», а затем добавляется «7».

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

Java — Basic Operators

Java provides a rich set of operators to manipulate variables. We can divide all the Java operators into the following groups −

  • Arithmetic Operators
  • Relational Operators
  • Bitwise Operators
  • Logical Operators
  • Assignment Operators
  • Misc Operators

The Arithmetic Operators

Arithmetic operators are used in mathematical expressions in the same way that they are used in algebra. The following table lists the arithmetic operators −

Assume integer variable A holds 10 and variable B holds 20, then −

OperatorDescriptionExample
+ (Addition)Adds values on either side of the operator.A + B will give 30
— (Subtraction)Subtracts right-hand operand from left-hand operand.A — B will give -10
* (Multiplication)Multiplies values on either side of the operator.A * B will give 200
/ (Division)Divides left-hand operand by right-hand operand.B / A will give 2
% (Modulus)Divides left-hand operand by right-hand operand and returns remainder.B % A will give 0
++ (Increment)Increases the value of operand by 1.B++ gives 21
— (Decrement)Decreases the value of operand by 1.B— gives 19

The Relational Operators

There are following relational operators supported by Java language.

Assume variable A holds 10 and variable B holds 20, then −

OperatorDescriptionExample
== (equal to)Checks if the values of two operands are equal or not, if yes then condition becomes true.(A == B) is not true.
!= (not equal to)Checks if the values of two operands are equal or not, if values are not equal then condition becomes true.(A != B) is true.
> (greater than)Checks if the value of left operand is greater than the value of right operand, if yes then condition becomes true.(A > B) is not true.
= (greater than or equal to)Checks if the value of left operand is greater than or equal to the value of right operand, if yes then condition becomes true.(A >= B) is not true.
> (right shift)Binary Right Shift Operator. The left operands value is moved right by the number of bits specified by the right operand.A >> 2 will give 15 which is 1111
>>> (zero fill right shift)Shift right zero fill operator. The left operands value is moved right by the number of bits specified by the right operand and shifted values are filled up with zeros.A >>>2 will give 15 which is 0000 1111

The Logical Operators

The following table lists the logical operators −

Читать еще:  Квадрат числа в java

Assume Boolean variables A holds true and variable B holds false, then −

OperatorDescriptionExample
&& (logical and)Called Logical AND operator. If both the operands are non-zero, then the condition becomes true.(A && B) is false
|| (logical or)Called Logical OR Operator. If any of the two operands are non-zero, then the condition becomes true.(A || B) is true
! (logical not)Called Logical NOT Operator. Use to reverses the logical state of its operand. If a condition is true then Logical NOT operator will make false.!(A && B) is true

The Assignment Operators

Following are the assignment operators supported by Java language −

OperatorDescriptionExample
=Simple assignment operator. Assigns values from right side operands to left side operand.C = A + B will assign value of A + B into C
+=Add AND assignment operator. It adds right operand to the left operand and assign the result to left operand.C += A is equivalent to C = C + A
-=Subtract AND assignment operator. It subtracts right operand from the left operand and assign the result to left operand.C -= A is equivalent to C = C – A
*=Multiply AND assignment operator. It multiplies right operand with the left operand and assign the result to left operand.C *= A is equivalent to C = C * A
/=Divide AND assignment operator. It divides left operand with the right operand and assign the result to left operand.C /= A is equivalent to C = C / A
%=Modulus AND assignment operator. It takes modulus using two operands and assign the result to left operand.C %= A is equivalent to C = C % A
>=Right shift AND assignment operator.C >>= 2 is same as C = C >> 2
&=Bitwise AND assignment operator.C &= 2 is same as C = C & 2
^=bitwise exclusive OR and assignment operator.C ^= 2 is same as C = C ^ 2
|=bitwise inclusive OR and assignment operator.C |= 2 is same as C = C | 2

Miscellaneous Operators

There are few other operators supported by Java Language.

Conditional Operator ( ? : )

Conditional operator is also known as the ternary operator. This operator consists of three operands and is used to evaluate Boolean expressions. The goal of the operator is to decide, which value should be assigned to the variable. The operator is written as −

Following is an example −

This will produce the following result −

instanceof Operator

This operator is used only for object reference variables. The operator checks whether the object is of a particular type (class type or interface type). instanceof operator is written as −

If the object referred by the variable on the left side of the operator passes the IS-A check for the class/interface type on the right side, then the result will be true. Following is an example −

This will produce the following result −

This operator will still return true, if the object being compared is the assignment compatible with the type on the right. Following is one more example −

This will produce the following result −

Precedence of Java Operators

Operator precedence determines the grouping of terms in an expression. This affects how an expression is evaluated. Certain operators have higher precedence than others; for example, the multiplication operator has higher precedence than the addition operator −

For example, x = 7 + 3 * 2; here x is assigned 13, not 20 because operator * has higher precedence than +, so it first gets multiplied with 3 * 2 and then adds into 7.

Here, operators with the highest precedence appear at the top of the table, those with the lowest appear at the bottom. Within an expression, higher precedence operators will be evaluated first.

CategoryOperatorAssociativity
Postfixexpression++ expression—Left to right
Unary++expression –-expression +expression –expression

!

Right to left
Multiplicative* / %Left to right
Additive+ —Left to right
Shift> >>>Left to right
Relational= instanceofLeft to right
Equality== !=Left to right
Bitwise AND&Left to right
Bitwise XOR^Left to right
Bitwise OR|Left to right
Logical AND&&Left to right
Logical OR||Left to right
Conditional?:Right to left
Assignment= += -= *= /= %= ^= |= >= >>>=Right to left

What is Next?

The next chapter will explain about loop control in Java programming. The chapter will describe various types of loops and how these loops can be used in Java program development and for what purposes they are being used.

Ссылка на основную публикацию
Adblock
detector