Операторы языка java
9. Java — Основные операторы языка
Java предоставляет богатый набор операторов для управления переменными. Все операторы Java можно разделить на следующие группы:
- арифметические операторы;
- операторы сравнения;
- побитовые операторы;
- логические операторы;
- операторы присваивания;
- прочие операторы.
Содержание
Арифметические операторы
Арифметические операторы — используются в математических выражениях таким же образом, как они используются в алгебре. Предположим, целая переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены арифметические операторы в Java:
Оператор | Описание | Пример |
+ | Складывает значения по обе стороны от оператора | A + B даст 30 |
— | Вычитает правый операнд из левого операнда | A — B даст -10 |
* | Умножает значения по обе стороны от оператора | A * B даст 200 |
/ | Оператор деления делит левый операнд на правый операнд | B / A даст 2 |
% | Делит левый операнд на правый операнд и возвращает остаток | B % A даст 0 |
++ | Инкремент — увеличивает значение операнда на 1 | B++ даст 21 |
— | Декремент — уменьшает значение операнда на 1 | B— даст 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. Скопируйте и вставьте следующий 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
Вы здесь: Главная >> Java-самоучитель >> Какие бывают операторы в языке Java
Обучающие курсы:
Какие бывают операторы в языке Java
Операторы в Java
В Java поддерживаются следующие арифметические операторы (табл. 2.4).
Таблица 2.4. Арифметические операторы
+ Сложение
— Вычитание
* Умножение
/ Деление
% Вычисление остатка
++ Инкремент
— Декремент
+= Присваивание со сложением
-= Присваивание с вычитанием
*= Присваивание с умножением
/= Присваивание с делением
%= Присваивание с вычислением остатка
Первые пять операторов всем знакомы по школьному курсу математики, причем два так называемых унарных оператора, и можно использовать для указания знака данною числа. Далее следуют операторы под названием инкремент (++) и декремент (- -).
Один из них (инкремент) прибавляет к значению переменной единицу, другой (декремент), наоборот, убавляет единицу.
Данные операторы указываются без пробела рядом со значением переменной. Если они стоят слева от переменной, то это называется префиксной формой инкремента или декремента, и это означает, что вначале к переменной прибавляется (или от нее отнимается) единица, а потом она используется в выражении. Если же инкремент (или декремент) ставится после имени переменной, то это называется постфиксной формой, и это означает, что переменная вначале используется в выражении, а затем к ней прибавляется (или от нее отнимается) единица.
Остальные пять операторов используются следующим образом:
а += b
аналогично записи:
а = а + b
Пример использования всех этих операторов приведен в листинге 2.9.
Листинг 2.9.
Пример использования арифметических операторов
class Example <
public static void main (String args[])
<
int a,b,c,d,e;
a=10
b= 11;
c= 12;
a+ = b; // a=21
a *= c; // a = 252
a = a — c; // a = 240
a -= c; // a = 228
d = 5;
e = 10;
System.out.println (++d); Выведется 6
System.out.println (d++); Выведется 6
System.out.println (e—) ; Выведется 10
System.out.println (—e) ; Выведется 8
>
>
Теперь рассмотрим битовые (поразрядные) операторы (табл. 2.5).
Таблица 2.5. Битовые (поразрядные) операторы
Оператор Описание
— Унарное отрицание
& Поразрядное И
| Поразрядное ИЛИ
^ Поразрядное исключающее ИЛИ
> Сдвиг битов вправо
>>> Сдвиг битов вправо с заполнением старшего бита нулем
&=, | =, ^=, >=, >>>= Присвоение с аналогичной операцией
С помощью данных операторов мы работаем над числами в их двоичном представлении. Рассмотрим, например, запись числа 15 в двоичной форме. 00001111
Первый оператор, называемый унарным отрицанием, превращает 0 в 1, а 1 в 0. Оператор поразрядного «и» создает в итоге единицу, если у обоих аналогичных битов сравниваемых чисел тоже 1. Если у них другое сочетание чисел, то итог будет 0. Например:
С = А & В
Предположим, А = 15 (00001111), а В равно 10 (00001010). Число С в таком случае будет равно 10 (00001010). Поразрядное «ИЛИ» означает следующее: если хотя бы один из битов равен 1, то итог тоже 1. Поразрядное исключающее «ИЛИ» возвращает 1, если только один из битов сравниваемых чисел равно 1. Следующие три оператора сдвигают биты влево на указанное число разрядов, причем сдвиг битов влево заполняет пустые позиции нулями. Пример использования этих операторов приведен в табл. 2.6 и листинге 2.10.
Таблица 2.6. Операторы сдвигов битов
Операторы Java
В этой статье вы узнаете о различных типах операторов Java и их синтаксисе.
Операторы это специальные символы, которые осуществляют операции над операндами ( переменными и значениями ). Например, « + » это оператор, который производит сложение.
Сейчас вы узнаете, как использовать операторы, чтобы манипулировать переменными.
Операторы присваивания
Используются в Java , чтобы присвоить значения переменным. Например,
Оператор « = » присваивает значение справа от себя переменной, находящейся слева. В примере переменной age присвоено значение 5 .
Пример 1: оператор присваивания
Когда вы запустите программу, на экран выведется:
Арифметические операторы
Арифметические операторы Java используются, чтобы производить математические операции сложения, вычитания умножения и так далее.
Оператор | Значение |
---|---|
+ | Сложение (также используется для конкатенации строк) |
— | Вычитание |
* | Умножение |
/ | Деление |
% | Остаток от деления |
Пример 2: Арифметические операторы
Когда вы запустите программу, на экран выведется:
В примере с оператором деления Java , приведенном выше, использованные операнды – переменные. Кроме этого могут использоваться символьные значения. Например:
Оператор « + » также может быть использован, чтобы соединить ( конкатенировать ) две строки или больше.
Пример 3: Арифметический оператор
Когда вы запустите программу, на экран выведется:
Унарные операторы
Унарный оператор Java производит операцию только над одним операндом.
Оператор | Значение |
+ | Унарный плюс (не нужен, так как числа положительные и без него). |
— | Унарный минус; инвертирует знак выражения. |
++ | Оператор инкремента; увеличивает значение на 1. |
— | Оператор декремента; уменьшает значение на 1. |
! | Оператор логического отрицания; инвертирует значение булевой переменной. |
Пример 4: Унарный оператор
Когда вы запустите программу, на экран выведется:
В Java можно использовать операторы « ++ » и « — » в качестве префикса и постфикса. Оператор « ++ » увеличивает значение на 1 , а « — » уменьшает значение на 1 .
Есть большая разница в использовании операторов Java инкремента и декремента в префиксе и в постфиксе. Рассмотрим пример:
Пример 5: Унарный оператор
Когда вы запустите программу, на экран выведется:
Когда выполняется выражение System.out.println(number++) , первым вычисляется изначальное значение. Переменная number увеличивается только после этого. Поэтому вы получите на выходе 5.2 . Далее, когда выполняется System.out.println(number) , показывается значение 6.2 .
Тем не менее, когда выполняется System.out.println(++number) , number увеличивается на 1 перед тем, как будет выведено на экран. Так же обстоят дела и с оператором Java декремента.
Операторы равенства и отношений
Операторы равенства и отношений проверяют, является ли операнд больше, меньше, равен, неравен второму и так далее. Получаемый результат равен true или false .
Оператор | Описание | Пример |
== | равен | 5 == 3 результат false |
!= | неравен | 5 != 3 результат true |
> | Больше | 5 > 3 результат true |
= | Больше или равен | 5 >= 5 результат true |
Java , на экран выведется: |
Здесь мы использовали оператор « > », чтобы проверить, больше ли number1 , чем number2 .
Так как number2 больше, чем number1 , результатом выражения number1 > number2 будет false .
Кроме операторов отношений, есть оператор сравнения типов instanceof , который сравнивает объект и определенный тип.
Оператор instanceof
Пример оператора instanceof .
Когда вы запустите программу, на экран выведется true . Это происходит от того, что test — экземпляр класса String .
Логические операторы
Java логические операторы || ( условное-ИЛИ (OR) ) и && ( условное-И (AND) ) совершают операции над булевыми выражениями. Вот как они работают.
Оператор | Описание | Пример |
|| | условное-ИЛИ; true если хотя бы одно из булевых выражений истинно (true) | false || true результат — true |
&& | условное-И; истинно если все булевы выражения истинны (true). | false && true результат — false |
Пример 8: Логические операторы
Когда вы запустите программу, на экран выведется:
Тернарный оператор
Условный оператор или тернарный оператор Java « ? :» — это сокращение выражения if-then-else . Синтаксис условного оператора:
Вот как это работает.
- Если значение выражения — true , expression1 присваивается переменной ;
- Если значение выражения — false , expression2 присваивается переменной .
Пример 9: Тернарный оператор
Когда вы запустите тернарного оператора Java пример, на экран выведется:
Побитовые операторы и смещение битов
Чтобы осуществлять побитовые операции, в Java используются такие операторы.
Оператор | Описание |
Побитовое дополнение. | |
> | Правый сдвиг. |
>>> | Беззнаковый правый сдвиг. |
& | Побитовое И. |
^ | Побитовое исключающее ИЛИ. |
| | Побитовое включающее ИЛИ. |
Эти операторы применяются нечасто.
Другие операторы присваивания
В начале статьи мы рассмотрели только один оператор присваивания = . Существует еще несколько операторов Java присваивания.
Оператор | Пример | Эквивалент |
+= | x += 5 | x = x + 5 |
-= | x -= 5 | x = x – 5 |
*= | x *= 5 | x = x * 5 |
/= | x /= 5 | x = x / 5 |
%= | x %= 5 | x = x / 5 |
>= | x >>= 5 | x = x >> 5 |
&= | x &= 5 | x = x & 5 |
^= | x ^= 5 | x = x ^ 5 |
|= | x |= 5 | x = x | 5 |
Данная публикация представляет собой перевод статьи « Java Operators » , подготовленной дружной командой проекта Интернет-технологии.ру
Операторы языка java
public static void main(String args []) <
int a = 3; // 0+2+1 или двоичное 0011
int b = 6; // 4+2+0 или двоичное 0110
System.out.println(» a = » + binary[a]);
System.out.println(» b = » + binary[b]);
System.out.println(» ab = » + binary[c]);
System.out.println(» a^b = » + binary[e]);
Ниже приведен результат, полученный при выполнении этой программы:
С: > Java BitLogic
Сдвиг и влево и вправо
Оператор >> означает в языке Java сдвиг вправо. Он перемещает все биты своего левого операнда вправо на число позиций, заданное правым операндом. Когда биты левого операнда выдвигаются за самую правую позицию слова, они теряются. При сдвиге вправо освобождающиеся старшие (левые) разряды сдвигаемого числа заполняются предыдущим содержимым знакового разряда. Такое поведение называют расширением знакового разряда.
В следующей программе байтовое значение преобразуется в строку, содержащую его шестнадцатиричное представление. Обратите внимание — сдвинутое значение приходится маскировать, то есть логически умножать на значение 0 х 0 f, для того, чтобы очистить заполняемые в результате расширения знака биты и понизить значение до пределов, допустимых при индексировании массива шестнадцатиричных цифр.
static public void main(String args[]) <
Ниже приведен результат работы этой программы:
Беззнаковый сдвиг вправо
Часто требуется, чтобы при сдвиге вправо расширение знакового разряда не происходило, а освобождающиеся левые разряды просто заполнялись бы нулями.
static public void main(String args[]) <
Для этого примера переменную b можно было бы инициализировать произвольным отрицательным числом, мы использовали число с шестнадцатиричным представлением 0xf1. Переменной с присваивается результат знакового сдвига b вправо на 4 разряда. Как и ожидалось, расширение знакового разряда приводит к тому, что 0xf1 превращается в 0xff. Затем в переменную d заносится результат беззнакового сдвига b вправо на 4 разряда. Можно было бы ожидать, что в результате d содержит 0x0f, однако на деле мы снова получаем 0xff. Это — результат расширения знакового разряда, выполненного при автоматическом повышении типа переменной b до int перед операцией сдвига вправо. Наконец, в выражении для переменной е нам удается добиться желаемого результата — значения 0x0f. Для этого нам пришлось перед сдвигом вправо логически умножить значение переменной b на маску 0xff, очистив таким образом старшие разряды, заполненные при автоматическом повышении типа. Обратите внимание, что при этом уже нет необходимости использовать беззнаковый сдвиг вправо, поскольку мы знаем состояние знакового бита после операции AND.
С: > java ByteUShift
Битовые операторы присваивания
Так же, как и в случае арифметических операторов, у всех бинарных битовых операторов есть родственная форма, позволяющая автоматически присваивать результат операции левому операнду. В следующем примере создаются несколько целых переменных, с которыми с помощью операторов, указанных выше, выполняются различные операции.
public static void main(String args[]) <
Результаты исполнения программы таковы:
С:> Java OpBitEquals
Для того, чтобы можно было сравнивать два значения, в Java имеется набор операторов, описывающих отношение и равенство. Список таких операторов приведен в таблице.
больше или равно
Булевы логические операторы
Булевы логические операторы, сводка которых приведена в таблице ниже, оперируют только с операндами типа boolean. Все бинарные логические операторы воспринимают в качестве операндов два значения типа boolean и возвращают результат того же типа.
логическое И (AND)
И (AND) с присваиванием
логическое ИЛИ (OR)
ИЛИ (OR) с присваиванием
логическое исключающее ИЛИ (XOR)
исключающее ИЛИ (XOR) с присваиванием
оператор OR быстрой оценки выражений (short circuit OR)
оператор AND быстрой оценки выражений (short circuit AND)
логическое унарное отрицание (NOT)
тернарный оператор if-then-else
Результаты воздействия логических операторов на различные комбинации значений операндов показаны в таблице.
Программа, приведенная ниже, практически полностью повторяет уже знакомый вам пример BitLogic. Только но на этот раз мы работаем с булевыми логическими значениями.
public static void main(String args[]) <
С: > Java BoolLogic
Операторы быстрой оценки логических выражений (short circuit logical operators)
Существуют два интересных дополнения к набору логических операторов. Это — альтернативные версии операторов AND и OR, служащие для быстрой оценки логических выражений. Вы знаете, что если первый операнд оператора OR имеет значение true, то независимо от значения второго операнда результатом операции будет величина true. Аналогично в случае оператора AND, если первый операнд — false, то значение второго операнда на результат не влияет — он всегда будет равен false. Если вы в используете операторы && и || вместо обычных форм & и |, то Java не производит оценку правого операнда логического выражения, если ответ ясен из значения левого операнда. Общепринятой практикой является использование операторов && и || практически во всех случаях оценки булевых логических выражений. Версии этих операторов & и | применяются только в битовой арифметике.
Тернарный оператор if-then-else
Общая форма оператора if-then-use такова:
выражение1? выражение2: выражениеЗ
В качестве первого операнда — «выражение1» — может быть использовано любое выражение, результатом которого является значение типа boolean. Если результат равен true, то выполняется оператор, заданный вторым операндом, то есть, «выражение2». Если же первый операнд paвен false, то выполняется третий операнд — «выражениеЗ». Второй и третий операнды, то есть «выражение2» и «выражениеЗ», должны возвращать значения одного типа и не должны иметь тип vo style=’mso-ansi-language: RU’>
В приведенной ниже программе этот оператор используется для проверки делителя перед выполнением операции деления. В случае нулевого делителя возвращается значение 0.
public static void main(String args[]) <