Иллюстрированный самоучитель по Java

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


К арифметическим операциям относятся:

сложение

+

(плюс);

вычитание

-

(дефис);

умножение

*

(звездочка);

деление

/

(наклонная черта — слэш);



взятие остатка от деления (деление по модулю)

%

(процент);

инкремент (увеличение на единицу)

++

;

декремент (уменьшение на единицу)

--

Между сдвоенными плюсами и минусами нельзя оставлять пробелы. Сложение, вычитание и умножение целых значений выполняются как обычно, а вот деление целых значений в результате дает опять целое (так называемое

"целое деление"),

например,

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

.



Содержание раздела