哪一个被称为第一个静态块或oncreate方法?

时间:2013-05-15 08:20:56

标签: android android-activity oncreate

我想知道哪个是第一个静态块或Oncreate方法

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


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


}

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

继续执行阻止 ....

1:=静态声明。

2:=非静态声明。

3:=构造函数执行。

4:=方法执行。

答案 2 :(得分:1)

首先执行静态块。

即使只访问静态字段而未实例化对象,也会执行静态块。在这种情况下,如果只访问静态字段,则构造函数或类方法(onCreate)尚未执行。

创建Class对象时执行所有静态代码。此(Class)对象在物理上保存内存中的静态变量(类变量)。静态块可以为Class对象初始化。稍后,每个类实例都会访问Class对象中的静态变量。

构造函数在内部也是一个静态方法,因为在实例化对象之前调用它。

如果您想进一步研究,此链接会详细介绍: http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

答案 3 :(得分:0)

静态阻止。

记住一个android程序主要是一个java程序。静态块用于在类加载时进行预初始化,因此将在android中onCreate之前调用。

详情请见http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html

答案 4 :(得分:0)

调用第一个静态,然后调用onCreate