ローカル変数
javaの場合c言語などと違い、ブロックを使ってローカル変数を上書きできない。
たとえば以下のようにブロックの外にあるローカル変数を
新たなブロック内で宣言してもコンパイルエラーになってしまう。
int k = 0; { int k = 13; // => コンパイルエラー System.out.println("hoge" + k); }
ただし、以下のようにブロックを抜けてから宣言する場合にはOKである。
これはブロックを抜けた時点で変数jが破棄されるためだ。
{ int j = 13; System.out.println("hoge" + j); } int j = 0; // => ブロック内で宣言した変数なら後から宣言できる
これらは当然for文のブロックにもあてはまる。
int i = 0; for (int i = 0; i < 10; i++) { // => コンパイルエラー System.out.println("hoge" + i); }
誤って変数を上書きしないための仕様なんだろうが、どうにもやりずらい。。。