實例分析Java中public static void main(String args[])是什么意思
本文實例講述了Java中public static void main(String args[])的來龍去脈。分享給大家供大家參考,具體如下:
public static void main(String[] args)
這絕對不是憑空想出來的,也不是沒有道理的死規(guī)定,而是java程序執(zhí)行的需要。
jvm在試圖運行一個類之前,先檢查該類是否包含一個特殊方法。這個方法必須是公有的,以便在任何位置都能訪問得到。這個方法必須是static的,因為這個方法不能依賴任何該類的實例即可運行,而非static的方法,在運行之前要先創(chuàng)建該類的實例對象。
這個方法沒有返回值。和C/C++程序不一樣,java的程序默認都以常態(tài)結束,所以main不返回int。如果要以非常態(tài)結束程序,可以用System.exit(1)。
這個方法必須可以接受數(shù)目不定的String類型的參數(shù),因為運行者可能要附加運行參數(shù)。如java HelloWorld jack 100,這里的jack和100就是運行參數(shù)。
為什么是String呢?因為String具有普遍性。任何字面形式都可以解釋成String,而其他類型則不然(如jack就不能解釋成整數(shù)或浮點數(shù)),所以用String來存儲參數(shù)最合適。而因為參數(shù)數(shù)目不限一個,所以用了數(shù)組,即String[]。在Java 1.5以后,還可以寫成String...,表示數(shù)目不定。
至于參數(shù)的變量名可以任意,只要保證在方法內部按該變量名來獲得參數(shù)就行了,從變量的作用角度來說,叫arguments或args當然是最合適的。
至于這個方法的名字為什么一定是main,有歷史原因,因為最早的C以main函數(shù)作為程序入口,java沿用了這個歷史傳統(tǒng)。
下面我們以一個例子一探究竟:
package test;
public class MainTest {
public static void main(String[] args)
{
for (int x=0; x<args.length; x++)
{
System.out.println(args[x]);
}
}
public static void sysInfo(){
System.out.println("call sysInfo()");
}
}
public class MainDemo {
/*
public static void main(String[] args)
public:權限修飾符,權限最大。
static:隨著MianDemo類的加載而加載,消失而消失。
void: 沒有返回值
main: 函數(shù)名,jvm識別的特殊函數(shù)名
(String[] args):定義了一個字符串數(shù)組參數(shù)
*/
public static void main(String... args)
{
String[] arr = new String[]{"zhang","li","wang","zhao"};
MainTest.main(arr);
MainTest.sysInfo();
}
/*
總結:
1、main()函數(shù)是被jvm調用,jvm給main()傳了一個長度為0的字符串的數(shù)組,也就是new String[0]
2、可以通過類名.main()進行傳值操作,因為main()方法是static的。
*/
}
運行結果:

希望本文所述對大家Java程序設計有所幫助。
相關文章
PowerJob的ProcessorLoader工作流程源碼解讀
這篇文章主要為大家介紹了PowerJob的ProcessorLoader工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12
在IntelliJ IDEA中多線程并發(fā)代碼的調試方法詳解
這篇文章主要介紹了在IntelliJ IDEA中多線程并發(fā)代碼的調試方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
Spring的@Value注入復雜類型(通過@value注入自定義類型)
Spring的@Value可以注入復雜類型嗎?今天教你通過@value注入自定義類型。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12

