java程序执行顺序的问题

来源:百度知道 编辑:UC知道 时间:2024/05/03 04:05:29
public class Demo {
public static void main(String[] args) throws Throwable {
A a = new A();
}
}

class AA {
public AA()
{

System.out.println("1");

}

public static B b2 = new B("2");
private B b1 = new B("3");
static {
B b3 = new B("4");
}
}

class A extends AA{
private B b1 = new B("5");
private static B b2 = new B("6");
public A() {
System.out.println("7");
}
}

class B {
public B(String str) {
System.out.println(str);
}
}

上面这程序执行的顺序是为什么?就是想知道原因~想不明白啊!!!高手指教

package org;

public class Demo {
public static void main(String[] args) throws Throwable {
/*
* 步骤 1
*
* 首先声明并初实例了一个A类的对象:a
* 程序则进入了类A当中
*/
A a = new A();
/*
* 步骤 5
*
* 通过以上步骤的判断,程序的执行顺序就显而易见了~~~
*
* 下面是执行顺序:
*
* 类AA 静态属性 b2 ---------结果:2
* 类AA 静态块 static{} ----结果:4
* 类A 静态属性 b2 ----------结果:6
* 类AA 非静态属性 b1 -------结果:3
* 类AA 非静态方法 AA() -----结果:1
* 类A 非静态属性 b1 --------结果:5
* 类A 非静态方法 A() -------结果:7
*
*/
}
}

class AA {
/*
* 步骤 3
*
* 类AA中存在着:
* 1个静态属性 b2
* 1个静态块 static{}
* 一个非静态属性 b1
* 一个构造方法 AA()
*/
public AA() {

System.out.println("1");

}
public static B b2 = new B("2");

private B b1 = new B("3");
static