{} の実行が開始された時点でスタック領域に割り当てられ、ブロックを抜けた瞬間にスタックから破棄(ポップアウト)されて参照不能となります。
また、Javaでは同じスコープ内において同名のローカル変数を二重に宣言することは許可されていません(シャドーイングの禁止)。例えば、メソッド内で宣言済みの変数名を、その中の for 文のループ変数名として再宣言するとコンパイルエラーとなります。
for(int i=0; i<5; i++) の i は for ループブロック内でのみ有効です。ループ終了後に System.out.println(i); と記述するとコンパイルエラーになります。
2. try-catchブロック内の変数:try ブロックの中で宣言した変数は catch や finally ブロック、および try の外側からは参照できません。
3. 同名変数の重複宣言:外側のスコープ(メソッド直下)で宣言された変数と同名の変数を、内側のブロック(ifやforの中)で再宣言することはコンパイルエラーになります(※フィールドとローカル変数の同名は許可され、ローカル変数が優先される shadowing と混同しないこと)。
ファクトチェック:1Z0-825-JPN(2026-08-01確認)。試験番号1Z0-825-JPN、試験時間90分、60問、合格ライン65%です。
この記事は公式出題範囲・チェックリストとの対応を編集部で確認した学習解説です。