Операторы Java · Урок 1/10
10%
⏱ 5 минут чтения Обновлено: 2026-07-04

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

1. Основные арифметические операторы Java

В следующей таблице перечислены основные арифметические операторы (или операции), применяемые в языке Java:

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

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

Рассмотрим некоторые правила работы с арифметическими операторами:

  • Выражения вычисляются слева направо, если не добавлены круглые скобки или одни операции имеют более высокий приоритет.
  • Операции *, /, и % имеют более высокий приоритет чем + и -.

Арифметические операторы над целочисленными значениями

Например, в этом коде, переменные a и b будут иметь разные значения:

public class BasicIntMath {
    public static void main(String[] args) {
        int a = 4 + 5 - 2 * 3;
        int b = 4 + (5 - 2) * 3;
        System.out.println("a = " + a);
        System.out.println("b = " + b);
    }
}

Результат выполнения:

a = 3
b = 13

Унарные операции сложения и вычитания

  • Операция унарного вычитания изменяет знак своего единственного операнда.
  • Операция унарного сложения просто возвращает значение своего операнда. Она в принципе не является необходимой, но возможна.
public class UnarySignOperation {
    public static void main(String[] args) {
        double a = -6;
        double b = +6;
        System.out.println(a);
        System.out.println(b);
    }
}

Деление целочисленных чисел в Java

Когда операция деления выполняется над целочисленным типом данных, ее результат не будет содержать дробный компонент. Это деление без остатка в Java:

public class IntDivision {
    public static void main(String[] args) {
        int a = 16 / 5;
        System.out.println(a);
    }
}

Результат выполнения этой программы:

3

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

Операнды арифметических операторов должны иметь числовой тип. Арифметические операторы нельзя выполнять над логическими типами данных, но допускается над типами данных char, поскольку в Java этот тип, по существу, является разновидностью типа int. Например:

public class BasicCharMath1 {
    public static void main(String[] args) {
        char c = 'n';
        System.out.println(c);
        System.out.println(c + 1);
        System.out.println(c / 5);
    }
}

Результат выполнения:

n
111
22

Или как в следующем примере:

public class BasicCharMath2 {
    public static void main(String[] args) {
        char c1 = '1';
        char c2 = '\u0031';
        char c3 = 49;
        System.out.println(c1 + c2 + c3);
    }
}

Результат выполнения:

147

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

Оператор деления по модулю — обозначается символом %. Этот оператор возвращает остаток от деления первого числа на второй в Java. При делении целого числа результатом будет так же целое число:

public class DivisionByModule {
    public static void main(String[] args) {
        int a = 6 % 5;
        double b = 6.2 % 5.0;
        System.out.println(a);
        System.out.println(b);
    }
}

Результат выполнения:

1
1.2000000000000002

2. Составные арифметические операции с присваиванием

Составные арифметические операторы

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

В Java имеются специальные операции, объединяющие арифметические операторы с операцией присваивания. Рассмотрим следующее выражение:

a = a + 4;

В Java эту операцию можно записать следующим образом:

a += 4;

Составные операции с присваиванием позволяют не только уменьшить объем кода, но и выполнять автоматическое преобразование, чего не делают обычные операции. Например, этот пример работать будет:

byte b = 10;
b += 5;

А в следующем будет ошибка компиляции:

byte b = 10;
b = b + 5;
public class CompoundOperations {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        int c = 3;
        a += 3;
        b *= 2;
        c += a * b;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
}

Часто задаваемые вопросы

Почему 16 / 5 в Java даёт 3, а не 3.2?

Потому что оба операнда — целые числа (int), а при делении целочисленных значений результат тоже целый: дробная часть просто отбрасывается, без округления. Поэтому 16 / 5 даёт 3. Чтобы получить дробный результат 3.2, хотя бы один из операндов должен быть числом с плавающей точкой, например 16.0 / 5 или 16 / 5.0.

Что делает оператор деления по модулю %?

Оператор % возвращает остаток от деления первого числа на второе. Например, 6 % 5 равно 1, потому что 6 делится на 5 один раз с остатком 1. Оператор работает и с дробными числами: 6.2 % 5.0 даёт 1.2. Деление по модулю часто используют, чтобы проверить чётность числа (n % 2 == 0) или получить остаток в циклических вычислениях.

Почему к типу char можно применять арифметические операторы?

Потому что в Java тип char по существу является разновидностью целочисленного типа: он хранит код символа по таблице Unicode. При использовании в арифметике char автоматически преобразуется в его числовой код. Например, символ 'n' имеет код 110, поэтому 'n' + 1 даёт 111. Арифметику нельзя применять только к типу boolean.

Чем a += 4 отличается от a = a + 4?

Результат вычисления одинаковый, но составной оператор += дополнительно выполняет неявное приведение результата обратно к типу переменной. Поэтому для byte b = 10; запись b += 5; компилируется, а b = b + 5; — нет: во втором случае результат b + 5 имеет тип int, который нельзя присвоить в byte без явного приведения. Кроме того, += делает код короче.

 

Презентацию с видео можно скачать на Patreon.

Видео объяснение

Предпочитаете видеоформат? Посмотрите этот урок с примерами и объяснениями.

Комментарии

Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.

‹ Предыдущий урок Следующий урок ›