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 — локальная установка не требуется.
Все уроки этого курса
- Использование var для локальных переменных
- Когда var повышает читаемость
- var в циклах for
- Ограничения var