var nei cicli for
Faccia dedurre i tipi delle variabili del ciclo
var nei cicli for è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Java Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Java Academy include 4 lezioni in totale.
var nei cicli
var funziona naturalmente come variabile di ciclo sia nei cicli for classici sia nei cicli for-each avanzati. Il compilatore deduce il tipo dal contesto del ciclo.
Contatore del ciclo for classico
In un ciclo for classico, var deduce il tipo del contatore dal suo inizializzatore. Qui var i = 0 deduce int.
public class Main {
public static void main(String[] args) {
for (var i = 0; i < 5; i++) {
System.out.println("i = " + i);
}
}
}for-each su una lista
In un ciclo for avanzato, var deduce il tipo dell'elemento dalla collezione. Qui ogni name è una 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);
}
}
}for-each su un array
Lo stesso vale per gli array. Il tipo dell'elemento viene dedotto dal tipo dell'array.
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);
}
}Iterazione delle voci di una Map
Quando si iterano le voci di una mappa, var evita di dover scrivere il tipo prolisso 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());
}
}
}Metodi dell'elemento inferito
Poiché il tipo dell'elemento è noto, è possibile chiamarne i metodi all'interno del ciclo con un controllo completo in fase di compilazione.
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() + ")");
}
}
}Cicli annidati
È possibile usare var anche nei cicli annidati, mantenendo breve la dichiarazione di ogni contatore.
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();
}
}
}Conteggio alla rovescia
Il tipo inferito segue l'inizializzatore, quindi un ciclo decrescente funziona allo stesso modo.
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 con contatori long
Se serve un contatore long, utilizzi un valore letterale long nell'inizializzatore, in modo che var inferisca il tipo più ampio.
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);
}
}Leggibilità nei cicli
I cicli sono uno dei contesti più chiari in cui usare var, perché il tipo è evidente dalla raccolta o dall'inizializzatore. Il codice rimane conciso e sicuro.
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);
}
}Indice e valore insieme
È possibile combinare un ciclo indicizzato classico con var per leggere sia la posizione sia il valore di un elenco.
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));
}
}
}Verifica rapida
In for (var name : names), dove names è una List<String>, quale tipo ha name?
Riepilogo
È stato appreso come usare var nei cicli:
- Cicli classici: inferisce il tipo del contatore dal relativo inizializzatore
- for-each: inferisce il tipo dell'elemento dalla raccolta o dall'array
- Evita tipi prolissi come
Map.Entry - Utilizzi valori letterali long, ad esempio
0L, per i contatori di tipolong - I cicli sono un contesto ideale per
var
Domande Frequenti
La lezione «var nei cicli for» è gratuita?
Sì — il testo completo di «var nei cicli for» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Java Academy, passa a CoddyKit PRO. Il corso Java Academy include 4 lezioni in totale.
Cosa imparerò in «var nei cicli for»?
Faccia dedurre i tipi delle variabili del ciclo Eserciti Java Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Java Academy?
Non è richiesta alcuna esperienza precedente. Java Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «var nei cicli for»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Java Academy?
Sì. Ogni lezione Java Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Utilizzare var per le variabili locali
- Quando var migliora la leggibilità
- var nei cicli for
- Limitazioni di var