Операторы в Java — введение в Java 009 #
Мы уже использовали многое в наших программах не задумываясь. Например знаками знакомыми нам из школьной математики: +, -, = и др.. Пришло время узнать весь список доступных в Java операторов и применение.
Заранее скажу, что для введения в Java достаточно понимать первые две таблицы - арифметические операторы и операторы сравнения.
Арифметические операторы - arithmetic operators #
Оператор | Пример использования | Пояснение |
---|---|---|
+ | a + b | Сложение |
- | a - b | Вычитание (также унарный минус) |
* | a * b | Умножение |
/ | a / b | Деление |
% | a % b | Деление по модулю |
++ | a++ | Инкремент, а++ соответствует а = а + 1 |
– | a– | Декремент, а– соответствует а = а - 1 |
+= | a += b | Сложение с присваиванием Выражение a += b эквивалентно значению a = a + b. |
-= | a -= b | Вычитание с присваиванием |
*= | a *= b | Умножение с присваиванием |
/= | a /= b | Деление с присваиванием |
%= | a %= b | Деление по модулю с присваиванием |
Знак +, ой, простите, оператор сложения может быть и оператором конкатенации. Конкатенация = объединение, сцепление. Мы с ним знакомы, когда цепляем один String с другим. Мы их не складывали, а конкатенировали.
Операторы сравнения #
Мы с ними немного познакомились при рассмотрении: тип данных boolean и логические операторы.
Оператор | Пример | Пояснение |
---|---|---|
== | a == b | a соответствует(равно) b |
!= | a != b | a не соответствует(не равно) b |
> | a > b | а больше b |
>= | a >= b | а больше либо равно b |
< | a < b | а меньше b |
<= | a <= b | а меньше либо равно b |
&& | a && b | а и b истинны, b оценивается условно (если а ложно, b не вычисляется) |
|| | a || b | а или b истинно, b оценивается условно (если а истинно, b не вычисляется) |
! | !a | а ложно |
& | a & b | AND, а и b истинны, b оценивается в любом случае |
| | a | b | OR, а или b истинно, b оценивается в любом случае |
^ | a ^ b | XOR, а и b различны (исключительное или, побитовое логическое или) |
Побитовые операторы #
Побитовые операторы работают с целыми числами, то есть с типами данных long, int, short, char(!), byte.
Оператор | Пояснение |
---|---|
~ | Побитовый унарный оператор NOT |
& | Побитовый AND |
&= | Побитовый AND с присваиванием |
| | Побитовый OR |
| = | Побитовый OR с присваиванием |
^ | Побитовый исключающий OR |
^= | Побитовый исключающее OR с присваиванием |
>> | Сдвиг вправо |
>= | Сдвиг вправо с присваиванием |
>>> | Сдвиг вправо с заполнением нулями |
« | Сдвиг влево |
«= | Сдвиг влево с присваиванием |
>>>= | Сдвиг вправо с заполнением нулями с присваиванием |
Побитовые операторы не самая простая тема и требует повторения/изучения математической составляющей. Её точно можно оставить “на потом” в базовое программирование эта тема не входит. Изучив и эту тему вы станете на один шаг ближе к “стать программистом”.
Доп. ссылки:
Логические операторы #
Логический операторы | Значение |
---|---|
== | Проверка на соотвествие (допустим, что a равен b) |
!= | Неравно (eсли a неравно b, то) |
! | Отрицание, логическое не |
& | Логическое И, and |
| | Логическое или, or |
^ | Исключительное или, XOR |
&& | Укороченный & |
|| | Укороченный или |
&= | AND с присваиванием |
|= | OR с присваиванием |
^= | XOR с присваиванием |
?: | Тернарный (троичный) условный оператор |
Тернарный оператор достаточно интересен, мы его обязательно рассмотрим отдельно в следующих уроках.
Операторы присваивания #
Операторы присваивания содержат в себе знак равенства =. Все их мы уже рассмотрели в рамках других операторов. И в этом нет никакого противоречия. Java многогранна и её не всегда можно однозначно описать простым языком кожаных мешков. Тот же += является одновременно оператором арифметическим и присваивания.
Это не значит, что вы не можете составить таблицу операторов сравнения самостоятельно.
Для факультативного изучения #
- Помимо всего прочего, операторы бывают унарными. Соответственно существуют бинарные и тернарные операторы.
- Логические операторы && и || - это укороченные версии операторов & и |.
Отличие заключается в том, что например в укороченной версии (или), если первый операнд имеет значение (true), то выражение сразу становится (true) и второй операнд даже не рассматривается. То же самое и с (и), если первый операнд имеет ложное значение (false), то и все выражение сразу становится (false), второй операнд не рассматривается. И соответственно благодаря тому, что значение второго операнда вычислять не нужно, экономится время и повышается эффективность кода.
Пример:
public class AndAnd {
public static void main(String[] args) {
if(a() && b()){ //здесь меняем оператор и сравниваем результаты
System.out.println("Готово");
}else{
System.out.println("Не получилось");
}
}
public static boolean a(){
System.out.print("Hallo ");
return false;
}
public static boolean b(){
System.out.println("World");
return true;
}
}
//Если использовать оператор &&, то
Hallo Не получилось
//Вывод при использовании оператора &
Hallo World
Не получилось
Если должны быть проверены все условия, то надо использовать &. Если речь идёт о быстром и чётком решении, то && помогает сэкономить ресурсы и время.
Дополнительные материалы #
- https://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html
- https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
- https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
- Прекраснейшая статья о побитовом сдвиге - https://javarush.ru/groups/posts/1925-pobitovihe-operacii
- https://www.baeldung.com/java-compound-operators
Очень рекомендую ресурс - www.baeldung.com. На проекте очень много грамотных постов о Java и из мира Java. Можно ввести в Google запрос “baeldung cast int” и получить прекрасную статью для самостоятельного изучения конвертации данных из типа данных String в int. Ресурс определённо в закладки.
Домашнее задание #
- Ознакомьтесь с термином - body mass index (BMI) Индекс массы тела .
- Напишите программу расчёта индекса массы тела.
- Если возникнут сложности, помните, что у вас есть все знания, что бы решить данную задачу. Просто решите её сначала на бумаге, а потом перенесите в Java.