public static void main(String[] args)
我通常知道主函數接受一個參數args,它包含提供的命令行參數作爲一個String對象數組。可以主函數取字符串而不是字符串[]
- 我還沒有看到主要除了
String[] args
以外的任何參數。爲什麼不是String
或Integer
? - 如果有一種方法可以指定
main
函數的輸入,請提供示例。
public static void main(String[] args)
我通常知道主函數接受一個參數args,它包含提供的命令行參數作爲一個String對象數組。可以主函數取字符串而不是字符串[]
String[] args
以外的任何參數。爲什麼不是String
或Integer
?main
函數的輸入,請提供示例。回答你的問題:NO
詳情:
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html
java命令啓動一個Java應用程序。它通過啓動Java運行時環境,加載指定的類並調用該類的主要方法。
該方法必須聲明爲公共和靜態,它不能返回任何值,它必須接受一個字符串數組作爲參數。該方法聲明具有如下形式:
公共靜態無效的主要(字串[] args)
正如你已經知道,是主要方法定義和你不能改變它。但是,您可以在args
數組中的元素轉換爲任何其他原始類型考慮,它是有效的格式轉換爲的類型的分配運算符的左側。
有多種方式來實現這一目標,其中之一是:
int input = Integer.valueOf(args[0]);
爲什麼不字符串或整數數組?
不是整數數組,因爲該數組將只涉及可能的參數的子集(您可以分析他們,並得到一個整數,但你還需要檢查,如果他們是整數,否則你會得到一個NumberFormatException異常) 。
不是一個字符串而是一個字符串數組,因爲最好讓命令參數分開而不是將它們放在一個大字符串中,事實上,很多時候您需要單獨處理命令參數。
虛擬機將識別爲main
方法。只有一個主簽名允許是public static void main(String[] args)
我還沒有看到主要參數除String []參數以外的任何參數。爲什麼不是一個字符串或整數數組?
是的,你可以採取任何String
或Integer
爲參數,但是這將成爲一個不同的功能main()
方法,而不是使用Java來啓動程序之一。編譯後,java搜索public static void main(String[] args){}
方法開始。如果你改變參數,那麼你的程序將不會運行。現在使用數組將只覆蓋數組可以允許的特定類型的值,例如int[]
只會存儲int
值,類似地String
只能有一個值,而您可能希望有多個參數。
如果有辦法指定主功能的輸入,請舉例說明。
是的,有辦法使用命令行(對於Windows)和終端(對於linux/unix)傳遞參數。
javac Filename.java
java FileName param1 param2 param3
(參數1,參數2,參數3是要傳遞參數)。不,你的主要方法不能拿只是一個字符串,主要方法必須使用數組語法或varagrs
語法接受一個String數組,請閱讀以下JSL §12.1.4. Invoke Test.main
最後,初始化類完成後測試(在 期間發生其他相應的加載,鏈接和初始化可能有 ),將調用Test的方法main。
方法main必須聲明爲public,static和void。它必須 指定一個形式參數(§8.4.1)其聲明的類型是數組 字符串。因此,無論下面的聲明是可以接受的:
public static void main(String[] args)
public static void main(String... args)
所以,你可以選擇要麼是語法,但不只是一個字符串。
只是爲了您的信息,您可以創建一個像public static void main(String args)
這樣的方法,但它不會被視爲JVM看起來是類的「主要」方法的起點。所以,如果你想在你的課堂上有一個「主要」方法,那麼你必須從上面的語法中選擇一種。
因爲命令行參數是一系列字符串,所以它們以字符串數組的形式給出。如果這是你想要的,你可以將它們解析爲程序中的整數。 – khelwood
它可以是'String []'或'String ...',沒有別的,因爲這就是JLS所說的。 – azurefrog