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

java中代码块的执行顺序

2016-09-21 15:02 162 查看

java中代码块的执行顺序

一. 无继承类情况下代码块执行顺序举例说明。

package Test;

public class C {
public C(){
System.out.println("I am C");
}
{
System.out.println("C");
}
static{
System.out.println("static C");
}
}

package Test;

public class MainTest{
public static void main(String[] args) {
// TODO Auto-generated method stub
C c = new C();
//B b = new B();
}
}


执行结果如下:



二. 继承情况下的代码块执行顺序举例说明。

package Test;

public class A {
public A(){
System.out.println("I am A");
}
{
System.out.println("A");
}
static{
System.out.println("static A");
}
}

package Test;

public class B extends A{
public B(){
System.out.println("I am B");
}
{
System.out.println("B");
}
static{
System.out.println("static B");
}
}


package Test;

public class MainTest{
public static void main(String[] args) {
// TODO Auto-generated method stub
//C c = new C();
B b = new B();
}
}
执行结果:



三. 总结

1. 在普通类实现new过程中,代码执行顺序分别是:

实现自身的静态属性和静态代码块(根据静态属性和静态代码块出现的顺序)。
实现自身的非静态属性和非静态代码块。

执行自身的构造函数。

2. 在有继承情况下,new过程中,代码块执行顺序是:

实现父类的公共静态属性和静态块级代码。

实现自身的静态属性和静态块级代码。

实现父类的非静态属性和非静态代码块。

执行父类的构造函数。

实现自身的非静态属性和非静态代码块。

执行自身的构造函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息