009 Java Arithmetic Operators

Операторы в 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 == ba соответствует(равно) b
!=a != ba не соответствует(не равно) 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 & bAND, а и b истинны, b оценивается в любом случае
|a | bOR, а или b истинно, b оценивается в любом случае
^a ^ bXOR, а и b различны (исключительное или, побитовое логическое или)

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

Побитовые операторы работают с целыми числами, то есть с типами данных long, int, short, char(!), byte.

ОператорПояснение
~Побитовый унарный оператор NOT
&Побитовый AND
&=Побитовый AND с присваиванием
|Побитовый OR
|=Побитовый OR с присваиванием
^Побитовый исключающий OR
^=Побитовый исключающее OR с присваиванием
»Сдвиг вправо
»=Сдвиг вправо с присваиванием
»>Сдвиг вправо с заполнением нулями
«Сдвиг влево
«=Сдвиг влево с присваиванием
»>=Сдвиг вправо с заполнением нулями с присваиванием

Это далеко не простая тема и требует повторения/изучения математической состовляющей. Но теоретически можно изучать Java и дальше, оставив эту тему на когда-нибудь потом, самое главное никому не говорите, что я это сказал. А если серьёзно, то изучив эту тему вы станете на один шаг ближе к “стать программистом”.

Доп. ссылки:

  1. Битовый сдвиг
  2. Побитовые операции в Java
  3. Побитовые операторы
  4. RAID

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

Логический операторыЗначение
==Проверка на соотвествие (допустим, что a равен b)
!=Неравно (eсли a неравно b, то)
!Отрицание, логическое не
&Логическое И, and
|Логическое или, or
^Исключительное или, XOR
&&Укороченный &
||Укороченный или
&=AND с присваиванием
|=OR с присваиванием
^=XOR с присваиванием
?:Тернарный (троичный) условный оператор

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

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

Операторы присваивания содержат в себе знак равенства =. Все их мы уже рассмотрели в рамках других операторов. И в этом нет никакого противоречия. Java многогранна и её не всегда можно однозначно описать простым языком кожаных мешков. Тот же += является одновременно оператором арифметическим и присваивания.

Это не значит, что вы не можете составить таблицу операторов сравнения самостоятельно.

Для факультативного изучения #

  1. Помимо всего прочего, операторы бывают унарными. Соответственно существуют бинарные и тернарные операторы.
  2. Логические операторы && и || - это укороченные версии операторов & и |.

Отличие заключается в том, что например в укороченной версии (или), если первый операнд имеет значение (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

  • Не получилось

Если должны быть проверены все условия, то надо использовать &. Если речь идёт о быстром и чётком решении, то && помогает сэкономить ресурсы и время.

Домашнее задание #

  1. Ознакомьтесь с термином - body mass index (BMI) Индекс массы тела .
  2. Напишите программу расчёта индекса массы тела.
  3. Если возникнут сложности, помните, что у вас есть все знания, что бы решить данную задачу. Просто решите её сначала на бумаге, а потом перенесите в Java.

Дополнительные материалы #

  1. https://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html
  2. https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
  3. https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
  4. Прекраснейшая статья о побитовом сдвиге - https://javarush.ru/groups/posts/1925-pobitovihe-operacii
  5. https://www.baeldung.com/java-compound-operators

Очень рекомендую последний ресурс - 4. www.baeldung.com. На проекте очень много грамотных постов о Java и из мира Java. Можно ввести в Google запрос “baeldung cast int” и получить прекрасную статью для самостоятельного изучения конвертации данных из типа данных String в int. Ресурс определённо в закладки.