溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

淺談Java文件執(zhí)行順序、main程序入口的理解

發(fā)布時間:2020-10-03 20:12:46 來源:腳本之家 閱讀:190 作者:Gxx2018 欄目:編程語言

在我們通過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

當我們加上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程序入口的詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網(wǎng)站的支持!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI