Oto część małego programu robię jako zadanie domowe:Handling niezainicjowane ciągów w Javie
public Exam maxGrade() {
Node p = firstNode;
int max = 0;
String name;
while (p!=null) {
if (p.info.getGrade()>max) {
max = p.info.getGrade();
name = p.info.getName();
}
p = p.next;
}
if (name==null)
return null;
else
return searchByName(name);
}
Kiedy więc śmiało i kompilacji, wyjścia kompilatora tę wiadomość:
Student.java:127: error: variable name might not have been initialized if (name==null)
problem można łatwo rozwiązać poprzez zastąpienie czwartej linii z:
String name = null;
Teraz widzę pewną logikę w to. Ale naprawdę chciałbym zrozumieć działania stojące za tym problemem. Mam na myśli, rozsądne, że kompilator sprawdza, czy zmienna jest zainicjowana, jeśli widzi, że robisz coś z tym w kodzie, ale nie sądzę, że robię cokolwiek, co POTRZEBUJE zmiennej, która ma zostać zainicjowana.
Według źródeł takich jak this po prostu zadeklaruję zmienną "String" zmiennej String (lub dowolnego innego obiektu), która już wskazuje na wartość null. Dlaczego jest to anomalia, aby sprawdzić, czy ta wartość jest zerowa? Czy kompilator uzna błąd za cokolwiek, co zrobię z niezainicjowaną zmienną inną niż przypisania?
Nie, to * nie * to, co mówi (podany link). Jak stwierdzono w zaakceptowanej odpowiedzi, zmienne lokalne nie są inicjowane, stąd błąd. –
Możliwy duplikat [Zmienna nie został zainicjalizowany błąd] (http://stackoverflow.com/questions/2448843/variable-might-not-have-been-initialized-error) wśród wielu innych. –