ローカル変数
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);
}
誤って変数を上書きしないための仕様なんだろうが、どうにもやりずらい。。。
