今天的java学习中,我总结了一些简单的java程序运行时代码调用步骤的问题,如下:


(一)基本的Java类的运行顺序:

public class Test {
    private String name = "Java私塾";
    private int age = 2;
    public Test(){
        age = 1000;//期望能到1000年,呵呵
    }
    public static void main(String[] args) {
        Test t = new Test();
        System.out.println(+"的年龄是"+t.age+"年");
    }
}

运行的基本顺序是:
(1):先运行到第7行,这是程序的入口
(2):然后运行到第8行,这里要new一个Test,就要调用Test的构造方法
(3):就运行到第4行,注意:可能很多人觉得接下来就应该运行第5行了,错!初始化一个类,必须先初始化它的属性
(4):因此运行到第2行,然后是第3行
(5):属性初始化完过后,才回到构造方法,执行里面的代码,也就是第5行
(6):然后是第6行,表示new一个Test实例完成
(7):然后回到main方法中执行第9行
(8):然后是第10行

运行的结果是:Java私塾的年龄是1000年

(二)初始化子类必先初始化父类


public class Test extends Parent{
	private String name = "Java私塾";
	private int age = 2;
	public Test(){
		age = 1000;//期望能到1000年,呵呵
	}
	public static void main(String[] args) {
		Test t = new Test();
		System.out.println(+"的年龄是"+t.age+"年");
	}
}
class Parent{
	private int num = 1;
	public Parent(){
		System.out.println("现在初始化父类");
	}
	public void test(){
		System.out.println("这是父类的test方法");
	}
}




上述类的基本运行顺序是:
(1):先运行到第7行,这是程序的入口
(2):然后运行到第8行,这里要new一个Test,就要调用Test的构造方法
(3):就运行到第4行,注意:初始化子类必先初始化父类
(4):要先初始化父类,所以运行到第14行
(5):然后是第13行,初始化一个类,必须先初始化它的属性
(6):然后是第15行
(7):然后是第16行,表示父类初始化完成
(8):然后是回到子类,开始初始化属性,因此运行到第2行,然后是第3行
(9):子类属性初始化完过后,才回到子类的构造方法,执行里面的代码,也就是第5行
(10):然后是第6行,表示new一个Test实例完成
(11):然后回到main方法中执行第9行
(12):然后是第10行

运行结果是:
现在初始化父类
Java私塾的年龄是1000年