這篇文章帶給大家的內容是關於Java中main()方法的用法介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
Java程式的入口---main()方法的簽章為:public static void main(String[] args) {...} ,其中,
♦ public修飾符:Java類別由JVM調用,為了讓JVM可以自由呼叫這個main()方法,所以使用public修飾符把這個方法暴露出來。
♦ static修飾符:JVM呼叫這個主方法時,不會先建立該主類別的對象,然後透過對象來呼叫該主方法。 JVM直接透過此類別來呼叫主方法,因此使用static修飾此主方法。
♦ void回傳值:因為主方法被JVM調用,該方法的回傳值將會傳回給JVM,這沒有任何意義,因此main()方法沒有傳回值。
上面方法中也包含一個字串陣列形參String[] args,根據方法呼叫的規則:誰呼叫方法,誰負責為形參賦值。也就是說,main()方法由JVM調用,即args形參應該由JVM負責賦值。但JVM怎麼知道要為args數組賦值呢?先看下面程式:
public class ArgsTest{ public static void main(String[] args){ //输出args数组的长度 System.out.println(args.length); //遍历args数组的每一个元素 for(String arg : args){ System.out.println(arg); } } }
上面程式是最簡單的「hello world」程序,只是這個程式增加了輸出args數組的長度,遍歷arg數組元素的程式碼。使用java ArgsTest指令運行上面的程序,看到程式只是輸出一個0,這表示args數值是一個長度為0的數組,這是合理的,因為電腦是沒有思考能力的,它只能忠誠地執行使用者交給它的任務,既然程式沒有為args數組設定參數值,那麼JVM就不知道args數組的元素,所以JVM將args數組設定為長度為0的數組。
改為一下指令執行上面的程式:
java ArgsTest Java Spring
列印結果為:
##
2 Java Spring
可以得出,如果執行java程式時在類別名稱後面緊跟著一個或多個字串(多個字串以空格隔開),JVM就會把這些字串一次賦值給args數組元素。執行Java程式時的參數與args陣列之間的關係為:第一個參數對應第一個陣列元素,第二個參數對應第二個陣列元素,... ,以此類推。
如果某參數本身包含了空格,則應該將該參數用雙引號""括起來,否則JVM會把這個空格當成參數分隔符,而不是當成參數本身。例如,採用以下指令來執行上面的程式:
java ArgsTest "Java Spring"
看到args的長度是1,只有一個陣列元素,其值為Java Spring。
問題:如何實作在main()方法執行之前輸出"hello world"?
眾所周知,在Java語言中,main()方法是程式的入口方法,在程式執行時,最先載入的就是main()方法,但這是否意味著main()方法就是程式運行時第一個被執行的模組呢?
答案是否定的。在Java語言中,由於靜態區塊在類別載入時就會被調用,因此可以在main()方法執行前,利用靜態區塊實作輸出「hello world」的功能,範例如下:
public class Test{ static{ System.out.println("hello world"); } public static void main(String[] args){ System.out.println("hello my world"); } }
程式運行結果為:
#
hello world hello my world
由於靜態程式碼區塊不管順序如何,都會在main()方法執行之前執行,因此,以下程式碼會與上面的程式碼有相同的輸出結果:
public class Test{ public static void main(String[] args){ System.out.println("hello my world"); static{ System.out.println("hello world"); } } }
以上是Java中main()方法的用法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!