您的位置: 嵌入式在线 > 技术中心 > Java > java程序的运行流程

java程序的运行流程

2006-11-16      嵌入式在线      收藏 | 打印
  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();


如果我们在类中建立一个对象:
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();
}
}

运行结果:

父类静态初始化块
子类静态初始化块
父类初始化块
父类构造函数
子类初始化块
子类构造函数

所以,牵涉到父类:父静态-->子静态-->父初始化及构造-->子初始化及构造;
注意:初始化块和构造是接连运行的,不会父类子类交替.
本文来源:互联网    作者:
热点资讯(一周点击率)
热评博文
评一评已有 0 位网友对此文发表了看法。  我也来评一下

验证码:  看不清?换一张

 

快乐大本营

    无线时代来临,移动产业生态系统将发生一些根本变化。今日头条推荐“芯片是嵌入式4G技术的关键 产业生态系统将发生变化”。

    想了解嵌入式开发工具的市场情况吗?先来体验下我们的在线调查吧!填写调查问卷

工程师之星
朱礼昆
电子信息工程专业,擅长硬件编程
  • 胡菲菲  技术专长:嵌入式系统linux
  • 柳如峰  技术专长:模电,电源
热门招聘
论坛热贴