程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> java的運行流程

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();
}
}

  運行結果:

  父類靜態初始化塊

  子類靜態初始化塊

  父類初始化塊

  父類構造函數

  子類初始化塊

  子類構造函數

  所以,牽涉到父類:父靜態-->子靜態-->父初始化及構造-->子初始化及構造;

  注意:初始化塊和構造是接連運行的,不會父類子類交替.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved