淺談Java文件執(zhí)行順序、main程序入口的理解
在我們通過JVM編譯Java后綴名的文件時,JVM首先尋找入口(main方法)
public static void main(String[] args)
1、由于在入口時,未調(diào)用任何對象,該方法只能設(shè)置為static靜態(tài)
2、JVM為Java的最底層,所以即使有返回結(jié)果,結(jié)果也無處可去,因此該方法必然是void無返回值
3、由于main方法是入口,被JVM自動調(diào)用,只有將該方法設(shè)置為public公有級別才能對JVM可見
綜上,入口main方法只能寫為
public static void main(String[] args)
在我們沒有寫main方法時,系統(tǒng)會自動會為我們添加一個無參mian主方法,該方法的添加位置為public類中首行(之前也提到過,只有添加在public級別中才對JVM可見,可以自動調(diào)用)
注意:如果在java文件中未包含任一公共類(public class),此文件依然可以通過編譯,但是主動運行由于找不到public class,就無法自動添加main方法,JVM找不到程序入口,運行會報錯,即編譯通過運行報錯,缺少public class的文件需要等待被其它java文件調(diào)用,無法作為入口。
package j2se;
class X{
Y y=new Y();
public X(){
System.out.print("X");
}
}
class Y{
public Y(){
System.out.print("Y");
}
}
//public class Z extends X{
// Y y=new Y();
// public Z(){
// System.out.print("Z");
// }
// public static void main(String[] args) {
// new Z();
// }
//}
報錯:
錯誤: 找不到或無法加載主類 j2se.Z
原因: java.lang.ClassNotFoundException: j2se.Z
當(dāng)我們加上public類(public class)后,編譯運行通過,根據(jù)返回結(jié)果可以清楚看到程序的執(zhí)行順序,代碼如下:
package j2se;
class X{
Y y=new Y();
public X(){
System.out.print("X");
}
}
class Y{
public Y(){
System.out.print("Y");
}
}
public class Z extends X{
Y y=new Y();
public Z(){
System.out.print("Z");
}
public static void main(String[] args) {
new Z();
}
}
運行結(jié)果:YXYZ
根據(jù)這個運行結(jié)果,我們可以看出,程序運行后JVM編譯順序為,JVM直奔public class中main()方法作為入口,并開始編譯執(zhí)行
public static void main(String[] args)
以上所述是小編給大家介紹的Java文件執(zhí)行順序、main程序入口的詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
EL調(diào)用Java方法_動力節(jié)點Java學(xué)院整理
簡單來說,我們在一個類中的某個方法,可以使用EL進(jìn)行調(diào)用,這個能被EL表達(dá)式調(diào)用的方法稱之為EL函數(shù),但是這種方式必須滿足兩點要求,具體哪兩點,大家可以參考下本文2017-07-07
SpringBoot多環(huán)境打包與配置文件排除實踐記錄
本文介紹了SpringBoot項目多環(huán)境打包與配置文件排除實踐,包括多環(huán)境配置的實現(xiàn)方法、打包時排除配置文件的方法以及動態(tài)加載外部配置文件的最佳實踐,感興趣的朋友跟隨小編一起看看吧2024-11-11
java中同類對象之間的compareTo()和compare()方法對比分析
這篇文章主要介紹了java中同類對象之間的compareTo()和compare()方法對比分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):單鏈表與雙向鏈表
這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)單鏈表、雙向鏈表的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08
spring的xml文件打開沒有namespace等操作選項的解決方案
這篇文章主要介紹了spring的xml文件打開沒有namespace等操作選項的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09

