public static void main(String[] args) {}
這個函數(shù)肯定是大家接觸的第一個Java函數(shù)了吧,也肯定寫得做夢頁忘不了它的樣子了。但就因為這樣所以導致了我們對他很不了解鳍咱。不信?那就一題見分曉彤敛。
請找出主函數(shù):
A蝇摸、public static void main(String[] args){}
B、public static int main(Sting[] args){}
C互站、private static void main(String[] args){}
D汁展、public static void main(String[] arr){}
E理肺、public static void main(String args[]){}
如果你毫無猶豫的選出了正確答案,那恭喜你善镰,后面的廢話你就不用看了妹萨,請關閉該頁面吧;
如果你選擇的過程中有些猶豫了炫欺,那我建議你看看后面的內容乎完;
如果你選擇錯了,那我覺得你仔細的閱讀一下這篇文章品洛。
答案:A,D,E
1树姨、主函數(shù)是一個固定寫法的函數(shù),它也是個函數(shù)桥状,只是有點特殊
特殊之處:
1帽揪、格式是固定的
2、被JVM所識別和調用
格式:
public static void main(String[] args){}?
其中加粗部分不固定辅斟,為什么呢转晰?因為這是形參的名字,只要符合命名規(guī)范就行士飒,你愛怎么寫就怎么寫查邢。那么其他部分的為什么要固定這樣寫呢?下面進行分析:
public:保重權限最大酵幕,這樣JVM才能識別與調用調用
static:這樣JVM調用主函數(shù)的時候就不用創(chuàng)建對象了扰藕,被static修飾的方法可以直接被類名調用, 這就省事多了芳撒。如果你用命令行的方式運行過Java程序邓深,那你就可以更加清楚是怎么一回事了未桥。
下圖是運行MainDemo.class(類名MainDemo)文件的命令,這個時候就會啟動JVM芥备,JVM一啟動就會找主函數(shù)冬耿,美找到就會報錯,找到唯一一個主函數(shù)的話门躯,JVM就會拿著你寫的這個類名去調用主函數(shù)了(MainDemo.main()),然后程序就跑起來了。
void:void修飾的方法酷师,表示這個方法沒有返回值讶凉,那返回值是不是誰調用了方法就返回給誰;那現(xiàn)在是不是JVM在調用的主函數(shù)山孔,那如果主函數(shù)有返回值是不是得返回給JVM懂讯,那你說JVM拿到返回值能干嘛?JVM是虛擬機你給它返回結果它自己都糾結台颠,它怎么用這個返回值褐望。所以不需要有返回值,所以用void對主函數(shù)進行修飾串前。
main:這個是函數(shù)名不像前面那些都是關鍵字瘫里,但JVM就認這個名字,別的不認
String[] args:這個是主函數(shù)的參數(shù)列表荡碾,是個數(shù)組類型的參數(shù)谨读,而數(shù)組的元素類型是字符串類型的;args是變量名,只要符合命名規(guī)范坛吁,你想取什么名字都行劳殖。那你是不是想知道為什么都寫args呢?因為大家學Java都是從Hello word開始拨脉,一開始都不懂哆姻,就先照著寫,學到后面感覺自己已經(jīng)很牛了玫膀,就感覺自己和主函數(shù)很熟了矛缨,就覺得這是固定的寫法。其實args是arguments的縮寫
到這里是不是對主函數(shù)有新認識了帖旨?別高興太早到這里頁就算得上認識而已劳景,還不夠熟悉它呢?
剛才說是JVM調用了主函數(shù)碉就,然后主函數(shù)是不是有個形參盟广,那JVM是不是應該在調用的時候傳入實參呀?那你就不好奇JVM傳了什么嗎瓮钥?
如果沒人告訴你JVM傳了什么筋量,你是不是也得有辦法知道呢烹吵?
我的辦法是:
public static void main(String[] args){
? ? ?System.out.println(args);
? ? ?System.out.println(args.length);
? ? ?for(int i = 0; i < args.length; i++){
? ? ? ? ? ? System.out.println(args[i]);
? ? ? }
}
結果我就不貼出來了,不是懶桨武,是想讓你自己去爽一把肋拔。
當你知道結果后你是不是想傳個參數(shù)再爽一爽啊呀酸?可以的接下來就滿足你凉蜂。
你要傳產(chǎn)生是不是應該在JVM調用主函數(shù)前就告訴JVM你要傳什么數(shù)對吧。所以你是不是應該在啟動JVM的時候進行傳值性誉?方法如下:
只要在執(zhí)行java MainDemo的后面加上你要傳的參數(shù)即可窿吩,通過空格來劃分。
到這里才算和主函數(shù)混熟了错览。