Операторы инкремента и декремента в Java — это короткая запись для изменения целочисленной переменной на 1: ++ и --. Они бывают префиксные (++x, --x) и постфиксные (x++, x--), и отличаются тем, когда именно возвращается значение — до или после изменения. Эти операторы часто встречаются в циклах и счётчиках, а в задачах важно не путать порядок вычисления в выражениях. В тренажере Java онлайн будут задания, тесты и примеры с визуализацией кода: как работает код с ++/--, что выводит программа и где типичные ошибки.
Пример: int a = 3; int b = a++; // b=3, a=4
- Модуль 1: Первая программа и структура
- Модуль 2: Переменные и типы данных
- Объявление и инициализация переменных.
- Примитивы: целые числа (int, long, byte, short).
- Примитивы: дробные числа (double, float).
- Примитивы: логический тип (boolean).
- Примитивы: символьный тип (char).
- String — основы работы со строками.
- Приведение типов (Casting): расширение и сужение.
- Область видимости переменных (Scope).
- Модуль 3: Операторы
- Модуль 4: Управляющие конструкции
- Модуль 5: Массивы и Строки (Advanced)
- Создание и заполнение массива.
- Доступ к элементам по индексу.
- Свойство length и перебор массива.
- Цикл for-each для массивов.
- Многомерные массивы.
- Методы String: length, charAt, isEmpty.
- Манипуляции: substring, concat, replace.
- Сравнение строк: equals vs ==.
- Разделение строк (split) и trim.
- StringBuilder (изменяемые строки).
- Модуль 6: Методы
- Модуль 7: Классы и Объекты (ООП Часть 1)
- Модуль 8: Капсуляция и Модификаторы
- Модуль 9: Наследование и Полиморфизм (ООП Часть 2)
- Модуль 10: Обработка исключений
- Модуль 11: Коллекции и Дженерики
- Модуль 12: Функциональный стиль (Java 8+)
- Модуль 13: Полезные стандарты
1. Вставьте ++ и -- в нужные места
Вставьте операторы инкремента (++) и декремента (--) в нужные места, чтобы код демонстрировал разницу между префиксной и постфиксной формами. Переменные x и y инициализированы значениями 3 и 7 соответственно. В результате выполнения программы должны быть выведены промежуточные значения, полученные разными способами, а финальные значения x и y должны стать одинаковыми (равными 5). Обратите внимание на комментарии в коде, которые указывают, когда нужно изменить значение переменной: до использования (префиксная форма) или после использования (постфиксная форма).
int x = 3;
int y = 7;
int a = input1S; // Увеличьте x, затем присвойте значение a
int b = input2S; // Присвойте значение y в b, затем уменьшите y
int c = input3S; // Присвойте значение x в c, затем увеличьте x
int d = input4S; // Уменьшите y, затем присвойте значение d
System.out.println(a + "," + b + "," + c + "," + d);
System.out.println("x=" + x + ", y=" + y);2. Выберите префикс или постфикс
В коде с пропусками нужно выбрать подходящие операторы инкремента и декремента из выпадающих списков, чтобы получить указанный результат. Обратите внимание на комментарии: в некоторых случаях нужно изменить значение переменной до использования (префиксная форма), а в других — после (постфиксная форма). Проанализируйте, какое значение должно быть присвоено в каждую переменную и каким должно стать финальное значение x и y.
int x = 5;
int y = 8;
int a = input1S; // Префиксный инкремент x
int b = input2S; // Постфиксный инкремент x
int c = input3S; // Префиксный декремент y
int d = input4S; // Постфиксный декремент y
System.out.println(a + "," + b + "," + c + "," + d);
System.out.println("x=" + x + ", y=" + y);3. Исправьте ошибку в использовании ++/--
В приведённом фрагменте Java-кода допущена ошибка в использовании оператора инкремента. Найдите строку, где оператор применён некорректно, и исправьте её так, чтобы код скомпилировался и работал правильно. Ошибка связана с применением ++ к недопустимому операнду.
public class Main { public static void main(String[] args) { int num = 5; int result = 5++; System.out.println(result); }}4. Соберите код со счётчиком
В этом задании вам нужно собрать Java-программу, которая демонстрирует работу операторов инкремента. Программа объявляет целочисленную переменную, последовательно применяет к ней преинкремент и постинкремент, выводя значения после каждой операции. Одна из предложенных строк лишняя и в решение не входит.
public class Main { public static void main(String[] args) { int i = 0; System.out.println(++i); System.out.println(i++); System.out.println(i); }} System.out.println(--i);5. Что выведет код с a++ и ++a
Внимательно изучите приведённый фрагмент Java-кода, который демонстрирует различие между постфиксным и префиксным инкрементом. Проанализируйте порядок выполнения операций и выберите вариант, который точно соответствует выводу программы.
public class Main {
public static void main(String[] args) {
int a = 5;
int b = a++;
int c = ++a;
System.out.println(a + " " + b + " " + c);
}
}6. Сопоставьте форму оператора и эффект
В левой колонке приведены выражения с операторами инкремента и декремента Java, включая префиксную и постфиксную формы, а также примеры присваивания. В правой колонке — описания их эффектов: когда именно происходит изменение переменной и какое значение участвует в вычислениях. Сопоставьте каждое выражение с соответствующим описанием, перетаскивая элементы правой колонки.
++xx++--xx--int y = x++;int z = ++x;7. Упорядочьте шаги выполнения выражения
Восстановите порядок вычисления выражения int a = 5; int b = ++a + a--;. Расставьте шаги так, как их выполняет Java. Следите за моментом изменения a и используемым значением.
Выполнить постдекремент a-- → a = 5Взять текущее значение a (6) для постдекрементаПрисвоить результат 12 переменной bВыполнить преинкремент ++a → a = 6Сложить операнды: 6 + 6 = 12Использовать новое значение a (6) как первый операндВзять текущее значение a (5)Использовать старое значение a (6) как второй операнд8. Разложите примеры по категориям
Перед вами список Java выражений, содержащих различные операторы. Разнесите их по категориям в соответствии с их типом. Каждое выражение должно попасть в одну из трех категорий: префиксные инкремент/декремент, постфиксные инкремент/декремент, или выражения, не содержащие операторов ++/--. Обратите внимание, что некоторые выражения содержат операторы ++/-- как часть более сложного выражения.
++ii++--jj--i + 1i += 1i = i + 1i -= 1++x * 2y-- * 29. Введите итоговое значение переменной
В этом задании вам нужно разложить примеры Java-выражений по трём категориям: префиксный инкремент/декремент, постфиксный инкремент/декремент, и выражения, которые не являются операторами ++/--. Внимательно изучите каждый фрагмент кода и определите, какой оператор в нём используется и где он находится относительно операнда.
10. Отметьте все постфиксные операции
Внимательно изучите приведённый фрагмент Java-кода. Ваша задача — отметить все операции инкремента и декремента, которые являются постфиксными, то есть стоят после переменной (вида i++ или i--). Не отмечайте префиксные операторы (вида ++i или --i) и другие выражения, которые не относятся к операторам ++/--.
public class CounterExample {
public static void main(String[] args) {
int a = 10;
int b = {{++a~|~t5}}; // префиксный инкремент
int c = {{a++~|~t1}}; // постфиксный инкремент
int d = {{--a~|~t6}}; // префиксный декремент
int e = {{a--~|~t2}}; // постфиксный декремент
int f = a + 1; // обычное сложение
int g = {{a += 1~|~t7}}; // оператор присваивания
int h = {{a = a + 1~|~t8}}; // полная форма присваивания
if (a > 0) {
int result = {{count++~|~t3}} + {{num--~|~t4}};
}
}
}11. Разметьте части выражения с инкрементом
В этом задании вам нужно разметить фрагмент Java-кода, содержащий операторы инкремента и декремента. Для каждого выделенного сегмента выберите его тип из предложенных категорий: ключевое слово, переменная, оператор, постфиксный инкремент, префиксный декремент или числовой литерал. Обратите внимание на положение операторов ++ и -- относительно переменных.
{{int~|~t1}} {{result~|~t2}} {{=~|~t3}} {{a++~|~t4}} {{+~|~t5}} {{--b~|~t6}} {{+~|~t7}} {{5~|~t8}};