2
public class TestVariableDeclaration{
    int j;  // ERROR
    j=45;   // ERROR

    static{
        int k;
        k=24;

    }

    {

        int l;
        l=25;
    }

    void local(){
        int loc;
        loc=55;
    }

}
  1. 上記で、変数「j」を宣言してから、クラスの下で直接初期化できないのはなぜですか
  2. Method,Static/Instance 初期化ブロックの下で、同じ方法で宣言してから初期化できますか?
  3. 違いは何ですか。Java はインスタンス変数の宣言と初期化をサポートしていないという事実を認識しています。その背後にある理由は何ですか??
4

3 に答える 3

2
  1. int j = 45; を使用してクラスレベルで宣言できます。Subhrajyoti Majumderが述べたように
  2. k は特別な関数/メソッドにあり、静的初期化子と呼びます。クラスがロードされたときに実行されます。k はこのメソッド内でのみ知られています
  3. l は、クラスのインスタンス化で実行される特別なメソッドにあります。l はこの方法でのみ知られています。

これは非常に基本的なJavaのものです。

(編集:タイプミス)

于 2013-10-08T07:12:29.140 に答える
0

通常の状況では、宣言する前に変数を使用することはできません。そう

j=45; 

jはまだ宣言されていないため、上部で失敗します。

私があなたの質問を受け取っていない場合を除き、これは次の場合に非常に可能です。

class SomeClass {
    int j; // declare it
    {
        j=45; // initialize it
    }
}

またはさらに簡潔に:

class SomeClass {
    int j = 45; // declare and initialize
}
于 2013-10-08T07:12:18.453 に答える