JAVA中的主函數,全部java程序的運行起點就是這個方法,除了args這個名字能夠不同外,其餘必須是這樣。java
主函數的通常寫法以下:函數
public static void main(String[] args){…}
(1)public關鍵字,這個好理解,聲明主函數爲public就是告訴其餘的類能夠訪問這個函數。
(2)static關鍵字,告知編譯器main函數是一個靜態函數。也就是說main函數中的代碼是存儲在靜態存儲區的,即當定義了類之後這段代碼就已經存在了。若是main()方法沒有使用static修飾符,那麼編譯不會出錯,可是若是你試圖執行該程序將會報錯,提示main()方法不存在。由於包含main()的類並無實例化(即沒有這個類的對象),因此其main()方法也不會存。而使用static修飾符則表示該方法是靜態的,不須要實例化便可使用。
(3)void關鍵字代表main()的返回值是無類型。
(4)參數String[] args,這是本文的重點。
第1、程序使用者能夠在命令行狀態下向某個類傳遞參數。看下面的例子:
spa
public class ArgsDemo { public static void main(String[] args) { String str = new String(); for (int i = 0; i < args.length; i++) { System.out.println(args[i]); str += args[i]; } System.out.println(str); } }
使用javac ArgsDemo.java命令生成ArgsDemo.class文件;而後使用「java ArgsDemo 參數一 參數二 參數三 …」的格式向ArgsDemo類傳遞參數。該示例程序將首先輸出參數,而後輸出全部參數的和。好比java ArgsDemo a b c,將獲得這樣的輸出:
a
b
c
abc
須要注意的是,若是這裏的循環條件不是i
Exception in thread 「main」 java.lang.ArrayIndexOutOfBoundException:3
at ArgsDemo.main(ArgsDemo.java:5)
第2、能夠在另外一個類中向包含main()的類傳遞參數,以下例:命令行
public class A { public static void main(String[] args) { for(int i=0;i System.out.println(args[i]); } } public class B { public static void main(String[] args) { c = new A(); String[] b = {"111","222","333"}; c.main(b); } }
首先定義一個class A,在A中定義一個main()函數,在該函數中輸出參數args。而後定義一個classB,在B中初始化一個A的實例c,而後向c傳遞參數,而且調用c的main方法打印出傳入的參數值。輸出結果以下:
111
222
333
因爲main()函數是靜態函數,即不須要實例化也能使用,因此B使用下面的寫法也能完成相同的功能:code
public class B { public static void main(String[] args) { //A c = new A(); String[] b = {"111","222","333"}; A.main(b); } }
總結:參數args的主要做用是爲程序使用者在命令行狀態下與程序交互提供了一種手段。此外在其餘類中直接使用main()函數,並傳遞參數也是可行的,雖然這種方法不太經常使用,但畢竟爲咱們提供了一種選擇。對象