エンジニア心得え-java-1

[エンジニア心得え-java-1]

□変数宣言時:変数のスコープとなるブロック({}で囲まれた部分)を確認する

[理由]

  • 同じ名前の変数があった場合に、どの変数が参照されるか判断できない
  • ブロックでソースを見る習慣をつける

[検証]

  • スコープが異なる同じ名前の変数を用意
    • 名前は同じでも出力される値が異なることがわかる。
    • 呼び出される変数はスコープで判断する。呼び出した位置から最も内側のスコープで定義された変数が使用される
public class ScopeTest {
    //this is member variable[m1].
    String var = "m1";
    public static void main(String[] args) {
        ScopeTest test = new ScopeTest();
        //this is local variable[l1] in main method.
        String var = "l1";
        System.out.println("①This var is :" + var);
        test.foo();
        System.out.println("②This var is :" + var);
        System.out.println("③This var is :" + test.var);
    }
    void foo() {
        //this is local variable[l2] in foo method.
        String var = "l2";
        bar();
        System.out.println("④This var is :" + var);
    }
    void bar() {
        //this refers 2nd line's member variable.
        var = "m1+";
    }
}
  • 実行結果
①This var is :l1
④This var is :l2
②This var is :l1
③This var is :m1+