Операторы Java ·
‹ Предыдущий Следующий ›
⏱ 5 минут чтения Обновлено: 2026-07-04

Инкремент и декремент

1. Инкремент и декремент: основы

Операции инкремента и декремента фото

Операции ++ и -- выполняют инкремент и декремент. Операция инкремента увеличивает значение операнда на единицу, а операция декремента - уменьшает значение операнда на единицу. Например, выражение

x = x + 1;

с операцией инкремента можно переписать так:

x++;

Аналогично следующее выражение:

x = x - 1;

равнозначно приведенному ниже выражению

x--;

2. Префиксная и постфиксная форма

Эти операции могут быть записаны в постфиксной форме, когда операция следует за операндом, а также в префиксной форме, когда операция предшествует операнду.

Рассмотрим разницу в использовании префиксного и постфиксного инкремента Java на следующем примере. Разница будет только тогда, когда инкремент используется в другой операции.

Например, при выполнении строки int b = a++; сначала значение из переменной a будет записано в переменную b и только потом произойдет инкремент (постфиксная форма означает после). Поэтому переменной b будет присвоено значение 1. Смотрим на следующую строку - int c = ++a; - в этом случае сначала выполнится инкремент (префиксная форма означает до), а уже потом новое значение из a будет записано в переменную c.

Когда инкремент не участвует в другой операции, например как в строке c++, не имеет значения напишите вы префиксную или постфиксную форму.

public class IncrementDecrement {
    public static void main(String[] args) {
        int a = 1;
        int b = a++;
        int c = ++a;
        c++;
        System.out.println("a = " + a);
        System.out.println("b = " + b);
        System.out.println("c = " + c);
    }
}

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

a = 3
b = 1
c = 4

3. Декремент: префикс и постфикс

Точно так же работает и декремент. Разница между префиксной и постфиксной формой проявляется только тогда, когда операция участвует в другом выражении. Рассмотрим аналогичный пример с --:

public class DecrementExample {
    public static void main(String[] args) {
        int a = 5;
        int b = a--; // постфикс: сначала b = 5, потом a становится 4
        int c = --a; // префикс: сначала a становится 3, потом c = 3
        System.out.println("a = " + a);
        System.out.println("b = " + b);
        System.out.println("c = " + c);
    }
}

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

a = 3
b = 5
c = 3

Как и в случае с инкрементом: при постфиксной форме a-- сначала используется текущее значение переменной, а уже потом происходит уменьшение; при префиксной форме --a сначала выполняется уменьшение, а затем используется новое значение.

4. Инкремент для типа char

Над переменной типа char тоже можно производить операцию инкремента. При этом инкремент производится над кодом символа. Символы в таблице Unicode размещены по алфавиту, поэтому при выполнении операции инкремента над символьным значением, мы получаем следующий по алфавиту символ:

public class CharInc {
    public static void main(String[] args) {
        char ch = 'X';
        System.out.println("ch содержит " + ch);
        ch++; // увеличиваем ch
        System.out.println("Новое значение ch: " + ch);
    }
}

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

ch содержит X
Новое значение ch: Y

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

В чём разница между префиксным (++a) и постфиксным (a++) инкрементом?

Оба увеличивают значение переменной на единицу — разница только в том, когда это происходит относительно использования значения. Префиксная форма ++a сначала увеличивает переменную, а потом возвращает уже новое значение. Постфиксная форма a++ сначала возвращает текущее значение, а увеличивает переменную уже после. То же правило действует для декремента --a и a--.

Когда разница между префиксной и постфиксной формой важна?

Разница проявляется только тогда, когда операция участвует в другом выражении — например, при присваивании int b = a++; или внутри вызова метода. Если же инкремент стоит отдельной строкой, как a++; или ++a;, результат одинаков, и форма не имеет значения.

Что будет выведено: int a = 1; int b = a++;?

Переменной b будет присвоено значение 1, а a станет равным 2. Это постфиксная форма: сначала текущее значение a (равное 1) записывается в b, и только потом a увеличивается на единицу. Если бы использовалась префиксная форма int b = ++a;, то и a, и b стали бы равны 2.

Можно ли применять инкремент к переменной типа char?

Да. Инкремент применяется к числовому коду символа по таблице Unicode. Поскольку символы в Unicode расположены по порядку, инкремент даёт следующий символ: например, для char ch = 'X'; после ch++ переменная будет содержать 'Y'. Так же работает и декремент, возвращая предыдущий символ.

 

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

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

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

Комментарии

ramkiss Aug 1, 2021
a++ и ++а не есть одно и тоже: int a = 1; int b = a++; //b=a=a+1 [b=1, a=2] int b = ++a; //b=a+1=a [b=2, a=2]

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