您的位置:首页 > 编程语言 > Java开发

举例说明java中静态代码块、非静态代码块、构造函数的执行顺序

2013-04-12 17:01 411 查看
例子如下:

public class TestCodeSeg {

static {

System.out.println("1");

}

{

System.out.println("2");

}

public TestCodeSeg() {

System.err.println("3");

}

public static void main(String[] args) {

new TestCodeSeg();

}

}

运行结果如下:

run:

1

3

2

成功生成(总时间:0 秒)

run:

1

2

3

成功生成(总时间:0 秒)

run:

3

1

2

成功生成(总时间:0 秒)

三种不同的运行结果说明它们的执行顺序是:

到目前为止能确定的一句话就是静态代码块比非静态代码块先执行。而构造函数的执行顺序不能确定,有可能在非静态代码块之后,有可能在它之前,也有可能在静态代码块之前执行。

再举例说明,如下所示:

public class Father {

//父类静态代码块

static {

System.out.println("父类---静态代码块");

}

//父类非静态代码块

{

System.out.println("父类===非静态代码块");

}

//父类构造函数

public Father() {

System.out.println("父类~~~构造函数");

}

//父类的main方法

/*public static void main(String args[]){

Father f=new Son();

}*/

}

class Son extends Father {

//static Son s=new Son();

//子类静态代码块

static {

System.out.println("子类---静态代码块");

}

//子类非静态代码块

{

System.out.println("子类===非静态代码块");

}

//子类构造函数

public Son(){

System.out.println("子类~~~构造函数");

}

//子类的main方法。

public static void main(String args[]){

Father f=new Son();

}

}

运行结果如下:

run:

父类---静态代码块

子类---静态代码块

父类===非静态代码块

父类~~~构造函数

子类===非静态代码块

子类~~~构造函数

成功生成(总时间:0 秒)

根据运行结果可知:

父类和子类的静态代码块先执行,其次是执行父类的非静态代码块和构造函数,最后执行的是子类的非静态代码块和构造函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐