Тернарный оператор в java
Операторы 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 » , подготовленной дружной командой проекта Интернет-технологии.ру
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 будет оцениваться слева направо.
Тернарный оператор в JavaScript
30 декабря 2019
Тернарный (или условный) оператор существует во многих языках программирования — например, в C++, Java, Python, PHP и других. Разберёмся, как он работает в JavaScript.
Все операторы различаются по количеству аргументов, к которым они применяются. Например, существует оператор «-», который меняет знак числа на противоположный. Если такой оператор применяется к одному числу, то есть у него один аргумент — он называется унарным.
Кроме унарных операторов, существуют операторы с двумя аргументами — бинарные. Например, бинарный «+» складывает два аргумента:
И, наконец, тернарный оператор:
условие ? выражение1 : выражение2
Это единственный оператор с тремя аргументами, что отражено в названии. Первый аргумент — это условие. Если оно истинно (равно true ), оператор вернёт второй аргумент — выражение1. В ином случае он вернёт третий аргумент — выражение2.
Что-то напоминает, да? По механике работы тернарный оператор похож на условную конструкцию if с альтернативной веткой else , но его синтаксис позволяет писать меньше строк кода. Сравним:
По сути оба фрагмента кода выполняют одно и то же действие — проверяют условие, а затем присваивают переменной первое или второе выражение в зависимости от истинности этого условия. Разница лишь в форме записи.
Варианты использования
Значение, возвращаемое тернарным оператором, можно записать в переменную — этот вариант мы уже рассмотрели в примере выше. Кроме этого, его можно использовать в функциях при возвращении значения с помощью return :
Также возможно использование множественных тернарных операций. В этом случае несколько операторов «?» будут идти подряд:
Здесь каждое условие проверяется последовательно. Если первое условие истинно, переменной booksCount присваивается значение ‘План на год выполнен!’ . В ином случае код выполняется дальше, и проверяется второе условие (booksCount > 10) .
Что выбрать: тернарный оператор или if
При выборе за основной показатель нужно взять читабельность кода. Чем код понятнее, нагляднее, тем удобнее его рефакторить и поддерживать. Тернарный оператор может как сделать код проще, так и необоснованно его усложнить. Это зависит от ситуации.
Посмотрим ещё раз на самый первый вариант, уже разобранный выше. Здесь переменной присваивается значение в зависимости от условия, и это пример грамотного использования тернарного оператора. В таком случае он позволяет избавиться от громоздкой условной конструкции и сделать код проще и короче.
Но есть варианты, когда использование оператора усложняет код. В большинстве случаев это относится к множественным тернарным операциям, о которых речь шла выше. Ещё к таким вариантам стоит отнести использование тернарного оператора для выполнения целых фрагментов кода в зависимости от условия, а не простого присвоения значения переменной. Рассмотрим пример:
Такой код достаточно сложно читать, особенно если строк станет больше. Здесь будет уместнее использовать условную конструкцию if .
Тем не менее не стоит отказываться от тернарного оператора. Он может помочь сделать код понятным и лаконичным. Главное — знать, в каких конкретно ситуациях его полезно использовать, и не злоупотреблять.
Тема 3. Операторы в Java
Операторы — это специальные символы (или целые слова), с помощью которых можно выполнять некоторые действия с данными (аргументами). Операторы, работающие с одним аргументом, называются унарными, с двумя — бинарными, а с тремя — тернарными. Те, что нужно писать до операнда, называют префиксными, те, что после, — постфиксными, но большинство из них нужно писать между аргументами, их называют инфиксными бинарными операторами.
Все операторы в Java, а их больше сорока, можно разбить на группы:
- арифметические,
- битовые,
- операторы сравнения,
- логические,
- операторы присваивания
и отдельностоящие instanceOf и тернарный (условный) оператор.
Арифметические операторы используются для осуществления привычных нам арифметических вычислений: сложение, вычитание, умножение, деление и др.
Ниже в таблице приведен список всех арифметических операторов:
Оператор | Описание | Пример |
---|---|---|
+ | Инфиксный оператор сложения. Складывает левый и правый аргументы. С типом String используется для конкатенации | int a = 13 + 271; |
— | Инфиксный оператор вычитания. Вычитает из левого аргумента правый | int a = 271 — 103; |
/ | Инфиксный оператор деления. Делит левый аргумент на правый. При работе с целочисленными типами остаток от деления отбрасывается | int a = 80 / 11; // = 7 |
* | Инфиксный оператор умножения. Умножает левый аргумент на правый | int a = 2 * 2; // = 4 🙂 |
% | Инфиксный оператор получения остатка от деления. Делит левый аргумент на правый и возвращает остаток от деления | int a = 15 % 11; // = 4 |
++ | Унарный оператор инкремента. Увеличивает значение аргумента на единицу | int a = 11; a++; |
— | Унарный оператор декремента. Уменьшает значение аргумента на единицу | int a = 11; a—; |
Пример работы с арифметическими операторами:
Отдельно нужно уделить внимание операторам ++ и — . В зависимости от того, где они стоят (до переменной или после), меняется их поведение. Если оператор префиксный, то сначала будет изменено на единицу значение переменной, и только потом будет выполнено следующее действие с ней. Для постфиксного варианта все будет наоборот: сначала значение переменной будет использовано в следующей операции, а уже потом изменено на единицу.
Рассмотрим это подробнее на примере:
После выполнения этого кода значения переменных будут следующие: a — 2, b — 4, c — 5. При инициализации переменной с , сначала мы берем значение переменной а (1) и прибавляем к нему значение переменной b . И только потом значение а будет увеличено на единицу.
Попробуем поставить оператор ++ перед переменной а . Теперь после выполнения кода значений будут такие: a — 2, b — 4, c — 6. Так как мы сначала увеличили значение а на единицу, а уже потом использовали его в сложении с b .
Все операторы сравнения в Java инфиксные, т.е. располагаются между операндами. Результатом их работы всегда является тип boolean ( true или false ). Рассмотрим их в следующей таблице:
Оператор | Описание | Пример |
---|---|---|
== | Проверяет равенство аргументов. Если операнды равны, возвращает true . Для ссылочных типов проверяет лишь равенство ссылок, а не значений. Для сравнения значений необходимо использовать метод equals() (мы обсудим это в одной из следующих тем) | boolean a = 15 == 13; // false |
!= | Проверяет неравенство аргументов. Если операнды НЕ равны, возвращает true . Для ссылочных типов проверяет неравенство ссылок, для проверки значений нужно использовать метод equals() (мы обсудим это в одной из следующих тем) | boolean a = 15 != 13; // true |
> | Возвращает true , если левый аргумент больше правого по значению. Работает только с числами | boolean a = 80 > 11; // = true |
>= | Возвращает true , если левый аргумент больше или равен правому по значению. Работает только с числами | boolean a = 2 >= 2; // = true 🙂 |
true , если левый аргумент меньше правого по значению. Работает только с числами | boolean a = 15 | |
true , если левый аргумент меньше или равен правому по значению. Работает только с числами | boolean a = 11 |
Пример работы с операторами сравнения:
Наиболее часто такие операторы применяются совместно с условным оператором if . Об этом мы поговорим в следующей теме.
Логические операторы работают только с boolean данными, в результате выполнения возвращается тот же тип.
Оператор | Описание | Пример |
---|---|---|
&& | Инфиксный дизъюнктор (оператор «И»). Если оба операнда истинны (т.е. == true ), возвращает true . Следует отметить, что если выражение в левой части ложно, то правый аргумент уже не будет обрабатываться и проигнорируется | boolean a = (15 |
ǀǀ | Инфиксный конъюнктор (оператор «ИЛИ»). Если хотя бы один из операндов истинен (т.е. == true ), возвращает true . Следует отметить, что если выражение в левой части истинно, то правый аргумент уже не будет обрабатываться и проигнорируется | boolean a = (15 ǀǀ (3 == 3); // true |
! | Унарный оператор инверсии. Меняет истину на ложь и наоборот | boolean a = !false; // = true |
При работе с boolean данными операторы & и | выступают в качестве логических, а не битовых. Главное их отличие от && и || в том, что они всегда выполняют и левое, и правое выражение, независимо от их значений.
Побитовые операции используются крайне редко и на данном этапе я не буду заострять на них внимание. Ниже в таблице вы найдете перечень операторов с кратким описанием и примерами. (Просто, чтобы вы знали, что такие возможности в Java есть)
Оператор | Описание | Пример |
---|---|---|
& | Инфиксный оператор AND | int a = 123 & 65; |
ǀ | Бинарный оператор OR | int a = 123 ǀ 65; |
^ | Инфиксный оператор XOR | int a = 123 ^ 65; |
Префиксный оператор побитового дополнения | int a = 65; | |
int a = 123 | ||
>> | Инфиксный оператор арифметического сдвига вправо | int a = 123 >> 3; |
>>> | Инфиксный оператор нулевого сдвига вправо | int a = 123 >>> 1; |
Для указания значения переменной или константы используются операторы присваивания. Частично мы их рассматривали в предыдущей теме. Сейчас изучим другие возможности.
Все операторы присваивания являются инфиксными и работают с двумя операндами. Слева располагается переменная или константа, для которой мы хотим определить значение, а справа выражение, результатом которого и будет нужное нам значение.
Помимо основного оператора присваивания = , есть и короткие записи для арифметических и побитовых операций. Их можно использовать когда перед присваиваиваем нужно получить текущее значение переменной и выполнить с ним какое-то действие. Например, мы хотим увеличить значение целочисленной переменной на 10. Мы можем сделать это так:
вторую строку можно укоротить, если использовать специальный оператор присваивания += . И код будет выглядеть так:
В данном случае оператор присваивания сначала выполнит сложение a + 10 и только потом присвоит полученный результат переменной a .
Аналогичные операторы есть и для других случаев:
Оператор | Пример | Аналог |
---|---|---|
+= | a += 1; | a = a + 1; a++; |
-= | a -= 3; | a = a — 3; |
*= | a *= 2; | a = a * 2; |
/= | a /= 4 | a = a / 4; |
%= | a %= 5; | a = a % 5; |
a | a = a | |
>>= | a >>= 7 | a = a >> 7; |
&= | a &= 8 | a = a & 8; |
^= | a ^= 9 | a = a ^ 9; |
ǀ= | a ǀ = 10 | a = a ǀ 10; |
Ключевое слово instanceOf используется для проверки отношения объекта к определенному классу. Подробнее об этом мы будем говорить в блоке про ООП.
Условный (тернарный) оператор
Этот оператор заметно отличается от всех рассмотренных. Во-первых, это тернарный оператор, т.е. работает он с тремя аргументами. Во-вторых, он уже ближе к управлению логикой приложения (Control Flow).
Основная задача условного оператора — выбор одного из двух выражений, опираясь на результат выполнения третьего. Схематично он выглядит так: операнд1 ? операнд2 : операнд3 , где операнд1 — переменная boolean или выражение, возвращающее этот тип; операнд2 выполняется, если операнд1 == true ; операнд3 выполняется, если операнд1 == false .
Нашел ошибку или есть что добавить? Обязательно напиши мне об этом, рад любой обратной связи.