プログラム内で、

int totalMoney = 0;

と記述すると問題なくコンパイルが通るのに、

int totalMoney;
totalMoney = 0;

と書くと、
<identifier> がありません

というエラーが出る。
『宣言と初期化を同時に行うのはあまり好ましくない』とどこかで読んだ気がするのに…。
なぜですか?