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.0 ≡ a = a + 100.0 (увеличение значения a на 100.0)
b –= 14 ≡ b = b – 14 (уменьшение значения b на 14)
Обратите внимание, что хотя такие операторы могут использоваться в выраженях, их вычисление изменяет значение операндов.