Есть хитрость с этим (и с большинством переменных на самом деле).
Если вы НИКОГДА не инициализируете переменную, вы фактически предоставляете компилятору больше информации.
В некоторых случаях вам нужно, но этот случай действительно интересен:
String s;
if(a==5)
s="It was Five";
if(a==6)
s="It was Six";
System.out.print(s);
Это очень плохой код, но изящная вещь в том, что Java поймает его и скажет вам: "Эй, есть хороший шанс, что вы получите этот отпечаток с нулем".
Если вы начали с одной из этих двух строк:
String s=null;
String s="";
Компилятор не мог бы помочь вам с этой ошибкой. (Маловероятно, что вы хотели напечатать "", не так ли?)
Правильное исправление, когда вы видите, что это сообщение «переменная, возможно, не была инициализирована», НЕ инициализирует строку как ноль или «». Необходимо убедиться, что в каждом возможном пути s установлено правильное значение:
if(a==5)
s="It was Five";
else if(a==6)
s="It was Six";
else
s="It was something else, who knows?";
Это прекрасно скомпилируется, даже без инициализации s. Это работает в сложных случаях if / else, циклах и исключениях, так что не просто предполагайте, что он будет ловить только тривиальные случаи, подобные этому!
Таким образом, «Лучшая практика» - НИКОГДА не инициализировать переменные равными «», 0 или нулю. Не инициализируйте их, если это действительно не имеет смысла, и вы не используете значение, которое вы им задаете.
Как только вы получите ошибку в моем примере, вместо остального вы можете просто инициализировать s как "Это было что-то еще, кто знает?" вместо добавления else - это было бы совершенно правильно; но не устанавливая его в null или "" по привычке, по крайней мере, он мог напомнить вам, что вы должны были это сделать.