具體講授Java中的main()辦法。本站提示廣大學習愛好者:(具體講授Java中的main()辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是具體講授Java中的main()辦法正文
媒介
JAVA中的主函數是我們再熟習不外的了,信任每一個進修過JAVA說話的人都可以或許闇練地寫出這個法式的進口函數,但關於主函數為何這麼寫,個中的每一個症結字分離是甚麼意思,能夠就不是一切人都能輕松地答出來的了。我也是在進修中碰著了這個成績,經由過程在網上搜刮材料,並加上本身的理論終究有了一點心得,不敢保存,寫出來與年夜家分享。
Java中的main()辦法
java虛擬機經由過程main辦法找到須要啟動的運轉法式,而且檢討main函數地點類能否被java虛擬機裝載。假如沒有裝載,那末就裝載該類,而且裝載一切相干的其他類。是以法式在運轉的時刻,第一個履行的辦法就是main()
辦法。平日情形下, 假如要運轉一個類的辦法,必需起首實例化出來這個類的一個對象,然後經由過程"對象名.辦法名()
"的方法來運轉辦法,然則由於main是法式的進口,這時候候還沒有實例化對象,是以將main辦法聲明為static的,如許這個辦法便可以直接經由過程“類名.辦法名() ”的方法來挪用。
在看Java中的main()辦法之前,先看一個最簡略的Java運用法式HelloWorld,我將經由過程這個例子解釋Java類中main()
辦法的奧妙,法式的代碼以下:
/** * Java中的main()辦法詳解 */ public class HelloWorld { public static void main(String args[]) { System.out.println("Hello World!"); } }
1、先說類:
HelloWorld 類中有main()
辦法,解釋這是個java運用法式,經由過程JVM直接啟動運轉的法式。
既然是類,java許可類不加public症結字束縛,固然類的界說只能限制為public或許無窮制症結字(默許的)。
2、再說main()辦法
這個main()
辦法的聲明為:public static void main(String args[])
。必需這麼界說,這是Java的標准。
為何要這麼界說,和JVM的運轉有關系。
當一個類中有main()
辦法,履行敕令“java 類名”則會啟動虛擬機履行該類中的main辦法。
因為JVM在運轉這個Java運用法式的時刻,起首會挪用main辦法,挪用時不實例化這個類的對象,而是經由過程類名直接挪用是以須要是限制為public static。
關於java中的main辦法,jvm無限制,不克不及有前往值,是以前往值類型為void。
main辦法中還有一個輸出參數,類型為String[],這個也是java的標准,main()
辦法中必需有一個入參,類細必需String[]
,至於字符串數組的名字,這個是可以本身設定的,依據習氣,這個字符串數組的名字普通和sun java標准典范中mian參數名堅持分歧,取名為args。
是以,main()
辦法界說必需是:“public static void main(String 字符串數組參數名[])
”。
3、main()辦法中可以throw Exception
是以main()
辦法中可以拋出異常,main()
辦法上也能夠聲明拋出異常。
好比,上面這個寫法是准確的:
public class TestMain { public static void main(String[] args) throws Exception { System.out.println("哈哈哈哈哈"); throw new Exception(""); } }
運轉成果: 哈哈哈哈哈 Exception in thread "main" java.lang.Exception: at maintest.TestMain.main(TestMain.java:11) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90) Process finished with exit code 1
4、main()辦法中字符串參數數組感化
main()
辦法中字符串參數數組感化是吸收敕令行輸出參數的,敕令行的參數之間用空格離隔。
上面給出一個例子,看看若何初始化和應用這個數組的。
/** * 打印main辦法中的輸出參數 */ public class TestMain { public static void main(String args[]){ System.out.println("打印main辦法中的輸出參數!"); for(int i=0;i<args.length;i++){ System.out.println(args[i]); } } }
履行辦法和運轉成果
D:\Study\basetest\src>javac TestMain.java D:\Study\basetest\src>java TestMain 1 2 3 打印main辦法中的輸出參數! 1 2 3
5、給出HelloWorld的別的一個版本
/** * 失常版的HelloWorld.呵呵 */ public class HelloWorld2 { static { System.out.println("Hello Wordld!"); } public static void main(String args[]){ System.exit(0); } }
這個main()
辦法履行的內容就一句" System.exit(0);
" ,目標是讓法式正常停止。那“HelloWorld!”是從哪裡打印的,機密就是在static打印的,由於static代碼塊的內容會在main挪用前挪用。
6、實例
虛擬機經由過程挪用某個指定類的辦法main啟動,傳遞給main一個字符串數組參數,使指定的類被裝載,同時鏈接該類所應用的其它的類型,而且初始化它們。例如關於法式:
public class HelloApp { public static void main(String[] args) { System.out.println("Hello World!"); for (int i = 0; i < args.length; i++) { System.out.println(args); } } }
編譯後在敕令行形式下鍵入: java HelloApp run virtual machine
將經由過程挪用HelloApp的辦法main來啟動java虛擬機,傳遞給main一個包括三個字符串"run"、"virtual"、"machine"的數組。如今我們略述虛擬機在履行HelloApp時能夠采用的步調。
開端試圖履行類HelloApp的main辦法,發明該類並沒有被裝載,也就是說虛擬機以後不包括該類的二進制代表,因而虛擬機應用ClassLoader試圖尋覓如許的二進制代表。假如這個過程掉敗,則拋出一個異常。類被裝載後同時在main辦法被挪用之前,必需對類HelloApp與其它類型停止鏈接然後初始化。鏈接包括三個階段:磨練,預備息爭析。磨練檢討被裝載的主類的符號和語義,預備則創立類或接口的靜態域和把這些域初始化為尺度的默許值,解析擔任檢討主類對其它類或接口的符號援用,在這一步它是可選的。類的初始化是對類中聲明的靜態初始化函數和靜態域的初始化結構辦法的履行。一個類在初始化之前它的父類必需被初始化。
全部進程以下:
總結
main辦法作為一個特別的標准,與通俗的辦法有很年夜差別,限制許多,懂得其道理須要進修JVM相干常識。是Java中進修中年夜妨礙。以上就是小編為年夜家整頓的對main道理和應用的總結,願望對年夜家能有所贊助,假如有疑問年夜家可以留言交換。