1

Android アプリケーションで使用する場合、次の 2 つの例の違いは何ですか?

例-1

public class ExampleClassOne {  
    public static int x = 9;
}

例-2

public class ExampleClassTwo{   
  public static int x;
  static{   
      x = 9;    
  } 
}
4

4 に答える 4

0

Oracleチュートリアルに従って:

public static int x = 9;

これは、初期化値が使用可能で、初期化を 1 行に入れることができる場合にうまく機能します。ただし、この形式の初期化には、その単純さゆえに制限があります。初期化に何らかのロジックが必要な場合 (たとえば、エラー処理や複雑な配列を埋めるための for ループ)、単純な代入は不十分です。

インスタンス変数はコンストラクターで初期化でき、エラー処理やその他のロジックを使用できます。クラス変数に同じ機能を提供するために、Java プログラミング言語には静的初期化ブロックが含まれています。

コンパイラが実際に行うことは、すべての静的変数初期化子とコードのすべての静的初期化子ブロックをクラス宣言に現れる順序で結合する単一のクラス初期化ルーチンを内部的に生成することです。この単一の初期化手順は、クラスが最初にロードされるときに 1 回だけ自動的に実行されます。

しかし、あなたのコードでは、違いはありません。

于 2013-07-06T18:16:31.080 に答える