3
  1. 静的ブロックの外側で宣言された静的変数と静的ブロックの内側で宣言された変数の違いは何ですか? (コードセグメントを考慮)

コード セグメントは次のとおりです。

class A{

    static int i = 10;      //line 1

    static { int i = 20;}   //line 2

    public static void main(String[] args) {
        System.out.println(A.i); //output is 10
    }
}

2.2 行目の変数 'i' にアクセスするにはどうすればよいですか?

4

2 に答える 2

0

私の意見では

1行目の「i」はグローバル変数ですが、2行目ではローカルです。つまり、そのスコープ外の変数にアクセスすることはできません(これは質問2の答えでもあります)

static {
    int i = 10;
    // this variable's scope only in static {},out of {},you can't access
    // so, if you want access a variable declared in a it's part,you must hold it's refer
    // but, if do this,why not declared it as a class instance member variable or static member variable(just like line 1)
    // generally,static code block is used in initial some class variable or do some prepare work when ClassLoader load it
}
于 2013-08-11T18:45:40.407 に答える