Używanie var dla zmiennych lokalnych
Pozwól kompilatorowi wywnioskować typ
Używanie var dla zmiennych lokalnych to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.
Lokalne wnioskowanie typów
Od wersji Java 10 można deklarować zmienne lokalne za pomocą var i pozwolić kompilatorowi wywnioskować typ na podstawie inicjalizatora. Nazywa się to lokalnym wnioskowaniem typów. Zmienna nadal jest silnie typowana.
Pierwsze użycie var
Podczas przypisywania wartości można zastąpić jawnie określony typ słowem var. Kompilator rozpoznaje literał i wnioskuje właściwy typ.
public class Main {
public static void main(String[] args) {
var message = "Hello";
var count = 42;
System.out.println(message + " " + count);
}
}var nie oznacza typowania dynamicznego
var nie sprawia, że Java staje się językiem typowanym dynamicznie. Po wywnioskowaniu typ jest ustalony. Późniejsze przypisanie wartości innego typu powoduje błąd kompilacji.
public class Main {
public static void main(String[] args) {
var n = 10;
n = 20;
System.out.println(n);
}
}Wnioskowanie typów obiektów
var działa również w przypadku obiektów. Wywnioskowany typ jest typem zwracanym przez wyrażenie inicjalizujące.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
var list = new ArrayList<String>();
list.add("a");
list.add("b");
System.out.println(list);
}
}Mniej powtórzeń
Długich typów generycznych nie trzeba już zapisywać dwukrotnie. var usuwa zbędny typ po lewej stronie.
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
var scores = new HashMap<String, Integer>();
scores.put("Alice", 90);
System.out.println(scores);
}
}Wnioskowanie na podstawie wartości zwracanych przez metody
Gdy metoda zwraca wartość, var automatycznie przyjmuje zadeklarowany typ zwracany przez tę metodę.
public class Main {
static String greet() {
return "Hi there";
}
public static void main(String[] args) {
var g = greet();
System.out.println(g.toUpperCase());
}
}var z typami prymitywnymi
Literał całkowity powoduje wywnioskowanie typu int, a literał dziesiętny — typu double. Należy pamiętać, który typ prymitywny zostanie użyty.
public class Main {
public static void main(String[] args) {
var i = 5;
var d = 5.0;
var b = true;
System.out.println(i + " " + d + " " + b);
}
}Nadal sprawdzane w czasie kompilacji
Ponieważ typ jest znany w czasie kompilacji, kompilator nadal wykrywa błędy typów. Wywołanie metody String na wywnioskowanej wartości typu int zakończyłoby się błędem kompilacji.
public class Main {
public static void main(String[] args) {
var name = "Coddy";
System.out.println(name.length());
}
}Konieczna natychmiastowa inicjalizacja
Deklaracja z użyciem var wymaga inicjalizatora w tym samym wierszu. Kompilator potrzebuje wartości, na podstawie której wywnioskuje typ.
public class Main {
public static void main(String[] args) {
var total = 0;
for (int i = 1; i <= 5; i++) {
total += i;
}
System.out.println(total);
}
}Działa z tablicami
Można wywnioskować typ tablicy, o ile inicjalizator jasno określa typ jej elementów.
public class Main {
public static void main(String[] args) {
var numbers = new int[]{1, 2, 3, 4};
var sum = 0;
for (var n : numbers) {
sum += n;
}
System.out.println(sum);
}
}Praktyczny przykład
Połączenie var w małym programie pozwala zachować przejrzystość kodu bez utraty pełnego typowania.
import java.util.List;
public class Main {
public static void main(String[] args) {
var fruits = List.of("apple", "banana", "cherry");
for (var fruit : fruits) {
System.out.println(fruit.toUpperCase());
}
}
}Szybkie sprawdzenie
Co najlepiej opisuje działanie var w Javie?
Podsumowanie
Omówiono używanie var dla zmiennych lokalnych:
- Kompilator wnioskuje typ na podstawie inicjalizatora
- Zmienna nadal jest silnie i statycznie typowana
- Inicjalizator jest wymagany w tym samym wierszu
- Ogranicza powtórzenia w przypadku długich typów generycznych
- Działa z typami prymitywnymi, obiektami i tablicami
Często zadawane pytania
Czy lekcja „Używanie var dla zmiennych lokalnych” jest bezpłatna?
Tak — pełny tekst „Używanie var dla zmiennych lokalnych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Używanie var dla zmiennych lokalnych”?
Pozwól kompilatorowi wywnioskować typ Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Java Academy?
Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Używanie var dla zmiennych lokalnych”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?
Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Używanie var dla zmiennych lokalnych
- Kiedy var poprawia czytelność
- var w pętlach for
- Ograniczenia var