エンジニア心得え-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+