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

首先调用静态,然后调用 onCreate

于 2013-05-15T08:26:52.647 回答