0Pricing
Java Academy · Урок

var в циклах for

Выводите типы переменных цикла

«var в циклах for» — бесплатный урок Java Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 4 уроков всего.

var в циклах

var естественно работает как переменная цикла и в классических циклах for, и в расширенных циклах for-each. Компилятор выводит тип из контекста цикла.

Счётчик классического цикла for

В классическом цикле for var выводит тип счётчика из его инициализатора. Здесь var i = 0 выводит тип int.

public class Main {
    public static void main(String[] args) {
        for (var i = 0; i < 5; i++) {
            System.out.println("i = " + i);
        }
    }
}

Цикл for-each по списку

В расширенном цикле for var выводит тип элемента из коллекции. Здесь каждое значение name имеет тип String.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        var names = List.of("Ann", "Ben", "Cara");
        for (var name : names) {
            System.out.println(name);
        }
    }
}

Цикл по массиву

То же самое работает и с массивами. Тип элемента выводится из типа массива.

public class Main {
    public static void main(String[] args) {
        var scores = new int[]{90, 85, 78};
        var total = 0;
        for (var s : scores) {
            total += s;
        }
        System.out.println("Total: " + total);
    }
}

Перебор записей отображения

При переборе записей отображения var избавляет Вас от необходимости записывать громоздкий тип Map.Entry.

import java.util.Map;

public class Main {
    public static void main(String[] args) {
        var ages = Map.of("Ann", 30, "Ben", 25);
        for (var entry : ages.entrySet()) {
            System.out.println(entry.getKey() + " -> " + entry.getValue());
        }
    }
}

Методы выведенного типа элемента

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

import java.util.List;

public class Main {
    public static void main(String[] args) {
        var words = List.of("red", "green");
        for (var w : words) {
            System.out.println(w.toUpperCase() + " (" + w.length() + ")");
        }
    }
}

Вложенные циклы

Вы также можете использовать var во вложенных циклах, делая объявление каждого счётчика короче.

public class Main {
    public static void main(String[] args) {
        for (var i = 1; i <= 3; i++) {
            for (var j = 1; j <= 3; j++) {
                System.out.print(i * j + " ");
            }
            System.out.println();
        }
    }
}

Обратный отсчёт

Выводимый тип определяется инициализатором, поэтому цикл с уменьшением счётчика работает так же.

public class Main {
    public static void main(String[] args) {
        for (var n = 5; n >= 1; n--) {
            System.out.println(n);
        }
        System.out.println("Liftoff");
    }
}

var со счётчиками long

Если Вам нужен счётчик типа long, используйте литерал long в инициализаторе, чтобы var вывел более широкий тип.

public class Main {
    public static void main(String[] args) {
        var sum = 0L;
        for (var i = 1L; i <= 1000000L; i++) {
            sum += i;
        }
        System.out.println(sum);
    }
}

Читаемость циклов

Циклы — одно из самых понятных мест для использования var, поскольку тип очевиден из коллекции или инициализатора. Код остаётся кратким и безопасным.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        var temps = List.of(20, 22, 19, 25);
        var max = Integer.MIN_VALUE;
        for (var t : temps) {
            if (t > max) max = t;
        }
        System.out.println("Max: " + max);
    }
}

Индекс и значение вместе

Вы можете объединить классический цикл с индексом и var, чтобы считывать из списка и позицию, и значение.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        var items = List.of("a", "b", "c");
        for (var i = 0; i < items.size(); i++) {
            System.out.println(i + ": " + items.get(i));
        }
    }
}

Быстрая проверка

В конструкции for (var name : names), где names имеет тип List<String>, какой тип у name?

Повторение

Вы узнали, как использовать var в циклах:

  • Классические циклы: тип счётчика выводится из его инициализатора
  • Цикл for-each: тип элемента выводится из коллекции или массива
  • Позволяет не указывать громоздкие типы, такие как Map.Entry
  • Используйте литералы long (например, 0L) для счётчиков типа long
  • Циклы — идеальное место для использования var

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

Урок «var в циклах for» бесплатный?

Да — полный текст урока «var в циклах for» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 4 уроков всего.

Чему я научусь в уроке «var в циклах for»?

Выводите типы переменных цикла Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Java Academy?

Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «var в циклах for»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Java Academy?

Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Использование var для локальных переменных
  2. Когда var повышает читаемость
  3. var в циклах for
  4. Ограничения var
← Назад к Java Academy