/
Программирование
/
Курс Java
/

Синтаксический сахар

Java: Синтаксический сахар

В программировании часто встречаются повторяющиеся конструкции. В Java, как и во многих других языках, их запись можно сократить. Такие упрощения называют синтаксическим сахаром. Они делают написание кода короче и приятнее, сохраняя тот же результат.

Сокращенные формы присваивания

Часто значение переменной меняют, прибавив или вычтя что-то, умножив или разделив на число. Базовый вариант выглядит так:

index = index + 1;
count = count * 2;
total = total - 5;
price = price / 3;

Java позволяет записать то же самое короче, с помощью составных операторов:

index += 1; // то же самое, что index = index + 1
count *= 2; // то же самое, что count = count * 2
total -= 5; // то же самое, что total = total - 5
price /= 3; // то же самое, что price = price / 3

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

Сахар в циклах

В циклах такие сокращения встречаются особенно часто. В них обычно меняют счетчик и накапливают результат:

var sum = 0;
var index = 1;

while (index <= 5) {
    sum += index;  // то же самое, что sum = sum + index
    index += 1;    // то же самое, что index = index + 1
}

System.out.println(sum); // => 15

Без сокращений тело цикла было бы длиннее и многословнее:

while (index <= 5) {
    sum = sum + index;
    index = index + 1;
}

Конкатенация строк

Составные операторы работают не только с числами. Для строк подходит +=, потому что + соединяет строки:

var text = "Hello";
text += " World"; // то же самое, что text = text + " World"
// "Hello World"

Поэтому при сборке строки в цикле счетчик меняют через +=, а к результату каждый раз дописывают очередной символ тем же оператором.

Поддерживаемые сокращения

Сокращенная форма есть почти у всех операторов: +=, -=, *=, /=, %=. Все они работают по одному принципу — берут текущее значение переменной, применяют операцию и кладут результат обратно.

Отдельно стоит изменение переменной на единицу. Запись index += 1 можно сократить до index++, а index -= 1 — до index--. Эти две операции называют инкрементом и декрементом, у них есть свои тонкости, и им посвящен отдельный разговор.

Задание

Реализуйте статический метод App.filterString(), принимающую на вход строку и символ, и возвращающую новую строку, в которой удален переданный символ во всех его позициях.

Пример вызова:

var str = "If I look back I am lost";
App.filterString(str, 'I'); // "f  look back  am lost"
App.filterString(str, 'o'); // "If I lk back I am lst"

Полезное

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются