3

最初に静的ブロックと Oncreate メソッドのどちらが実行されるか知りたい

public class MainActivity extends Activity {
static{
// dosomething
}


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


}
4

5 に答える 5

12

あなたの質問に答えるには、静的ブロック、次に onCreate メソッドです。

クラスはこのようにロードされます

  • まず、定義されている順序で静的なもの。
  • 次に、非静的なもの。
  • 次に、コンストラクター
  • 次に、インスタンス メソッドを呼び出すことができます。

    パブリック クラスの例 {

    public static int FIRST = 1;
    
    static {
        // second
    }
    
    public int third = 3;
    
    {
        // forth
    }
    
    public Examle(){
        // fifth
    }
    
    public void sixth(){
    }
    

    }

http://javarevisited.blogspot.com/2012/07/when-class-loading-initialization-java-example.html

于 2013-05-15T08:27:05.563 に答える
2

ブロックを実行する次の方法....

1 := 静的宣言。

2 := 非静的宣言。

3 := コンストラクターの実行。

4 := メソッドの実行。

于 2013-05-15T09:09:25.680 に答える
1

静的ブロックが最初に実行されます。

オブジェクトをインスタンス化せずに静的フィールドのみにアクセスした場合でも、静的ブロックが実行されます。このシナリオでは、静的フィールドのみがアクセスされる場合、コンストラクターまたはクラス メソッド (onCreate) はまだ実行されません。

Class オブジェクトが作成されると、すべての静的コードが実行されます。この(クラス)オブジェクトは、静的変数(クラス変数)をメモリ上に物理的に保持します。静的ブロックは Class オブジェクトの初期化に使用できます。その後、すべてのクラス インスタンスが Class オブジェクトの静的変数にアクセスします。

コンストラクターは、オブジェクトがインスタンス化される前に呼び出されるため、内部的には静的メソッドでもあります。

さらに学習したい場合は、このリンクで詳細を確認できます: http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

于 2013-11-11T11:03:51.770 に答える
0

静的ブロック。

Android プログラムは主に Java プログラムであることを思い出してください。静的ブロックは、クラスのロード時に事前初期化に使用されるためonCreate、Android で前に呼び出されます。

詳細については、http: //docs.oracle.com/javase/tutorial/java/javaOO/initial.htmlを参照してください。

于 2013-05-15T08:26:38.887 に答える
0

最初に static が呼び出され、次に onCreate が呼び出されます

于 2013-05-15T08:26:52.647 に答える