AnyLogic
Развернуть
Размер шрифта

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

Java поддерживает следующие арифметические операции:

Оператор Операция
+ Сложение
- Вычитание
* Умножение
/ Деление
% Остаток от целочисленного деления

Приоритет операций умножения и деления выше, чем у сложения и вычитания. Операции с одинаковыми приоритетами выполняются слева направо. Вы можете изменять порядок выполнения операций с помощью скобок:

a + b / c ≡ a + ( b / c )
a * b - c ≡ ( a * b ) - c
a / b / c ≡ ( a / b ) / c

Рекомендуется всегда явно задавать порядок выполнения операций с помощью скобок — в этом случае вам не придется думать о том, приоритет какой операции выше.

Стоит уделить особое внимание целочисленному делению.

Результат деления в Java зависит от типов операндов. Если оба операнда — целые числа, то результат будет тоже целым. Поэтому непреднамеренное использование целочисленного деления может привести к существенной потере точности. Чтобы произвести обычное деление, получив в качестве результата вещественное значение, в Java нужно явно указать, что хотя бы один из операндов является вещественным числом.

Например:

3 / 2 ≡ 1
2 / 3 ≡ 0

потому что это целочисленное деление. Однако

3 / 2. ≡ 1.5
2.0 / 3 ≡ 0.66666666… 

потому что 2. и 2.0 являются вещественными числами. Если k и n являются переменными типа int, то k/n будет производить целочисленное деление и выдавать в качестве результата целое число (значение типа int). Чтобы получить вещественный результат при делении двух целочисленных переменных (или выражений), вы должны заставить Java рассматривать хотя бы одну переменную как вещественную. Это делается с помощью приведения типов: для этого вам нужно перед именем переменной написать в скобках имя типа, к которому вы хотите преобразовать значение, например, (double)k/n даст вещественный результат деления (значение типа double).

Целочисленное деление часто используется вместе с операцией взятия остатка от деления для получения номера строки и столбца элемента по его порядковому номеру. Предположим, что есть коллекция из 600 элементов, задающая, скажем, места в театре, и мы хотим условно расположить эти места в 20 рядов, каждый из которых содержит по 30 мест. В этом случае получить номер ряда и номер места в этом ряду можно будет с помощью следующих выражений:

Номер места: index % 30 (остаток от деления индекса на 30: 0 — 29)
Номер ряда: index / 30 (целочисленное деление индекса на 30: 0 — 19)

где порядковый номер (индекс) index принимает значения от 0 до 599. Например, место с индексом 247 будет соответствовать месту 7 в ряду 8.

У операции возведения в степень в Java нет собственного оператора (если вы напишете a^b, то это будет означать операцию побитового ИЛИ). Чтобы выполнить возведение в степень, нужно вызвать функцию pow():

pow( a, b ) ≡ ab

Java поддерживает несколько упрощенных операторов для часто используемых операций с численными переменными:

i++ i = i + 1 (увеличение значения i на 1)
i-- i = i - 1 (уменьшение значения i на 1)
a += 100.0a = a + 100.0 (увеличение значения a на 100.0)
b -= 14b = b - 14 (уменьшение значения b на 14)
Обратите внимание, что хотя такие операторы могут использоваться в выражениях, их вычисление изменяет значение операндов.
Как мы можем улучшить эту статью?