Операции над целыми типами
Все операции, которые производятся над целыми числами, можно разделить на следующие группы.
Арифметические операции
К арифметическим операциям относятся:
- сложение + (плюс);
- вычитание - (дефис);
- умножение * (звездочка);
- деление / (наклонная черта – слэш);
- взятие остатка от деления (деление по модулю) % (процент);
- инкремент (увеличение на единицу) ++;
- декремент (уменьшение на единицу) --
Между сдвоенными плюсами и минусами нельзя оставлять пробелы. Сложение, вычитание и умножение целых значений выполняются как обычно, а вот деление целых значений в результате дает опять целое (так называемое "целое деление"), например, 5/2 даст в результате 2, а не 2.5, а 5/(-3) даст -1. Дробная часть попросту отбрасывается, происходит усечение частного. Это поначалу обескураживает, но потом оказывается удобным для усечения чисел.
Замечание
В Java принято целочисленное деление.
Это странное для математики правило естественно для программирования: если оба операнда имеют один и тот же тип, то и результат имеет тот же тип. Достаточно написать 5/2.0 или 5.0/2 или 5.0/2.0 и получим 2.5 как результат деления вещественных чисел.
Операция деление по модулю определяется так: а % b = а -(а / b) * b; например, 5%2 даст в результате 1, а 5% (-3) даст, 2, т.к. 5 = (-3) * (-1) + 2, но (-5)%3 даст -2, поскольку -5 = 3 * (-1) -2.
Операции инкремент и декремент означают увеличение или уменьшение значения переменной на единицу и применяются только к переменным, но не к константам или выражениям, нельзя написать 5++ или (а + b)++.
Например, после приведенных выше описаний i++ даст -99, a j-- даст 99.
Интересно, что эти операции можно записать и перед переменной: ++i, --j. Разница проявится только в выражениях: при первой формe записи (постфиксной) в выражении участвует старое значение переменной и только потом происходит увеличение или уменьшение ее значения. При второй форме записи (префиксной) сначала изменится переменная и ее новое значение будет участвовать в выражении.
Например, после приведенных выше описаний, (k++) + 5 даст в результате 10004, а переменная k примет значение 10000. Но в той же исходной ситуации (++k) + 5 даст 10005, а переменная k станет равной 10000.