java的运行流程

java的运行流程

,我们所看不到的:

1,如果java文件没有package,就默认给文件加上"无名"package;

2,默认导入java.lang,所以我们的java程序中可以使用Sting,Math,Integer等类,包括一些异常类;

3,如果生成的类没有父类,则为这个类隐式加上父类:Object;因此,包括Object中的许多方法可以使用;

4,字段的初始化;

,我们所看的到的:

既然看的到,就先看程序运行结果:

public class JRun1 {

public JRun1() {

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

}

static

{

    System.out.println("static{}");

}

{

    System.out.println("{}");

}

 

public static void main(String[] args) {

    System.out.println("main()");

}

 

}

运行结果:

static{}

main()

 

 

显然,程序运行时,先运行:

static

{

System.out.println("static{}");

}

再调用main();

 

 

注意: 我们可以得到一个副产品:不用main方法也能运行的程序:

public class JRun1 {

 

static

{

 

    System.out.println("no main()");

    System.exit(0);

}

 

}

 

 

如果我们在类中建立一个对象:

public class JRun1 {

public JRun1() {

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

}

static

{

    System.out.println("static{}");

 

}

{

    System.out.println("{}");

}

 

public static void main(String[] args) {

    System.out.println("main()");

    new JRun1();

  }

}

运行结果:

static{}

main()

{}

构造函数

 

从而,我们得出:

建立一个非主类对象,顺序为:静态初始化块static{}-->初始化块{}-->构造函数constructor;

 

 

那么,牵涉到继承,运行流程又如何?

 

看程序:

 

class JRun1Father{

JRun1Father(){

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

}

static{

System.out.println("父类静态初始化块");

}

{

System.out.println("父类初始化块");

}

}

public class JRun1 extends JRun1Father{

 

 

public JRun1() {

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

}

static

{

System.out.println("子类静态初始化块");

 

}

{

System.out.println("子类初始化块");

}

 

public static void main(String[] args) {

//System.out.println("主方法)");

new JRun1();

}

 

}

 

运行结果:

 

父类静态初始化块

子类静态初始化块

父类初始化块

父类构造函数

子类初始化块

子类构造函数

 

所以,牵涉到父类:父静态-->子静态-->父初始化及构造-->子初始化及构造;

注意:初始化块和构造是接连运行的,不会父类子类交替.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值