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

В этом уроке речь пойдет про арифметические операции и операторы.

В программировании операторы — это команды, выполняющие определённые действия: математические, строковые, логические или операции сравнения. К арифметическим операторам в Java относятся: + (сложение), - (вычитание), * (умножение), / (деление) и % (взятие остатка). Эти операторы работают аналогично другим языкам программирования.

Приоритет операций в Java такой же, как и в математике:
Первая группа: /, *, %
Вторая группа: +, -

Ограничения

Операторы * (умножение) и / (деление) имеют более высокий приоритет и применимы к любым числовым типам, включая char. Однако деление на ноль недопустимо — программа выбросит исключение ArithmeticException.

Типы данных в Java имеют строгие диапазоны значений. Например:

byte xyz = 125 + 15; // Ошибка — превышен диапазон byte (-128 до 127)

Тип byte занимает 8 бит, и если результат выходит за пределы этого диапазона, возникает ошибка.

Данные в компьютере хранятся в виде нулей и единиц (в двоичной системе). Именно поэтому тип данных определяет, сколько памяти выделяется для хранения значения. Если выбрать слишком маленький тип, можно столкнуться с нехваткой разрядности или потерей точности.

Пример деления

Если вы делите целые числа, то и результат будет целым (дробная часть отбрасывается):

byte ab = 12 / 9; // Результат: 1
Если не учитывать особенности типов данных, умножение может привести к нехватке разрядности, а деление — к потере точности.

Деление по модулю

Оператор % возвращает остаток от деления. Например:

13 % 9; // Результат: 4

Операнды (например, 13 и 9) чаще всего целочисленные, но оператор может применяться и к числам с плавающей точкой. Важно помнить: знак результата зависит от левого операнда.

Как работает оператор %

Он вычитает правый операнд из левого, пока результат не станет меньше правого:


15 % 4 = 3
19 % 5 = 4
22 % 6 = 4
Например: 15 - 4 = 11 (>4), 11 - 4 = 7 (>4), 7 - 4 = 3 (<4), следовательно 15 % 4=3.

Инкрементирование и декрементирование

Инкрементирование (от англ. increment — увеличение) обозначается двойным плюсом ++. Декрементирование (уменьшение) — двойным минусом --.

Префиксная форма:


int a = 5;

++a; // a = 6 — инкрементирование
--a; // a = 5 — декрементирование

Постфиксная форма:


int a = 5;

a++; // a = 6 — инкрементирование
a--; // a = 5 — декрементирование
Разница между префиксной и постфиксной формой проявляется, когда операция выполняется в выражении — префиксная изменяет значение сразу, постфиксная — после использования переменной.

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

  1. Создайте переменные разных числовых типов (byte, int, float, double).
  2. Попробуйте выполнить с ними операции: +, -, *, /, %.
  3. Проверьте, что произойдет при делении на ноль.
  4. Попробуйте применить ++ и -- в префиксной и постфиксной формах.

Тест — Насколько ты понял урок?


🌐 in English
Всего лайков:0

Оставить комментарий

Мой канал в социальных сетях
Отправляя email, вы принимаете условия политики конфиденциальности

Полезные статьи:

Java v25: выбор подходящей многопоточности для любых задач
Введение Мир Java стремительно развивается, и с каждой версией появляются новые инструменты для эффективной работы с многопоточностью, коллекциями и асинхронностью. В Java 25 разработчики получают мощ...
Context, propagation и cancellation patterns в Go vs Java | Паттерны, идиомы и лучшие практики Go
← Связанные статьи: Часть 1 — Error handling и defer в Go (Параллельность и синхронизация) | Паттерны, идиомы и лучшие практики Go 1. Context и его роль В Go context.Context используется для пере...
Compiler, Build и Tooling в Go и Java: как устроены сборка, инициализация, анализ и диагностика в двух экосистемах
Эта статья посвящена общему обзору того, как в Go устроены compiler, build и tooling-практики, и как их удобнее понимать через сравнение с Java. Мы не будем уходить в узкоспециализированные детали каж...

Новые статьи:

Конкурентность — это не про «запустить много потоков». Это про договорённости между ними. Представь кухню ресторана: — повара (потоки / горутины) — заказы (задачи) — и главный вопрос: как они коорди...
История начинается не с академической теории, а с типичной production-проблемы. Представьте сервис: 48 CPU 300+ потоков нагрузка 200k операций в секунду много shared state Команда использует обы...
Когда HashMap начинает убивать продакшн: инженерная история ConcurrentHashMap
Представьте обычный продакшн-сервис. 32 CPU сотни потоков кэш конфигурации / сессий / rate limits десятки тысяч операций в секунду И где-то внутри — обычный Map. Сначала всё выглядит безобидно. Map&...
Fullscreen image