////////////////////////////////////////////////////////////////////////////////
// << j222c.java >>
//
// クラス(2):スコープ(ローカル変数のスコープ)
//
// ・入れ子構造のブロック内で同じ名前のローカル変数は宣言できない。
// ・ブロック内で宣言されたローカル変数は、ブロック外で解放される。
//
// (1)ブロック内で異なる名前のローカル変数は宣言できる。
// (2)ブロック内で同じ名前のローカル変数は宣言できない。
// (3)ブロック内でローカル変数は参照できる。
// (4)ブロック外でローカル変数は参照できない。
//
////////////////////////////////////////////////////////////////////////////////
class C {
void m() {
int a = 111;
// ブロック1。
{
int b = 222; //(1)
System.out.println("(2)int a; はエラー"); //(2)
System.out.println("(3)b = " + b); //(3)
}
System.out.println("(3)a = " + a); //(3)
System.out.println("(4)ローカル変数bの参照はできない"); //(4)
}
}
class j222c {
public static void main(String args[]) {
C obj = new C();
obj.m();
}
}
実行結果
% javac j222c.java
% java j222c
(2)int a; はエラー
(3)b = 222
(3)a = 111
(4)ローカル変数bの参照はできない