您好,登錄后才能下訂單哦!
這篇文章給大家介紹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();
}
}
運行結果:
父類靜態初始化塊
子類靜態初始化塊
父類初始化塊
父類構造函數
子類初始化塊
子類構造函數
所以,牽涉到父類:父靜態-->子靜態-->父初始化及構造-->子初始化及構造;
注意:初始化塊和構造是接連運行的,不會父類子類交替.
關于java的運行過程是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。