Muss ich allen Variablen gleich bei der Deklaration einen Wert zuweisen?

Nein, es muss nur gewährleistet sein, dass die Variable beim ersten lesenden Zugriff belegt ist. Dabei ist zu berücksichtigen, dass Klassenvariablen und Instanzvariablen im Unterschied zu lokalen Variablen eine Default-Initialisierung haben.

Lokale Variablen müssen vor ihrem ersten lesenden Zugriff einen Wert zugewiesen bekommen.