2017-05-01 138 views
0

public static void main(String[] args) 我通常知道主函數接受一個參數args,它包含提供的命令行參數作爲一個String對象數組。可以主函數取字符串而不是字符串[]

  • 我還沒有看到主要除了String[] args以外的任何參數。爲什麼不是StringInteger
  • 如果有一種方法可以指定main函數的輸入,請提供示例。
+4

因爲命令行參數是一系列字符串,所以它們以字符串數組的形式給出。如果這是你想要的,你可以將它們解析爲程序中的整數。 – khelwood

+2

它可以是'String []'或'String ...',沒有別的,因爲這就是JLS所說的。 – azurefrog

回答

3

回答你的問題:NO

詳情:

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html

java命令啓動一個Java應用程序。它通過啓動Java運行時環境,加載指定的類並調用該類的主要方法

該方法必須聲明爲公共和靜態,它不能返回任何值,它必須接受一個字符串數組作爲參數。該方法聲明具有如下形式:

公共靜態無效的主要(字串[] args)

2

正如你已經知道,是主要方法定義和你不能改變它。但是,您可以在args數組中的元素轉換爲任何其他原始類型考慮,它是有效的格式轉換爲的類型的分配運算符的左側。

有多種方式來實現這一目標,其中之一是:

int input = Integer.valueOf(args[0]); 
1

爲什麼不字符串或整數數組?

不是整數數組,因爲該數組將只涉及可能的參數的子集(您可以分析他們,並得到一個整數,但你還需要檢查,如果他們是整數,否則你會得到一個NumberFormatException異常) 。

不是一個字符串而是一個字符串數組,因爲最好讓命令參數分開而不是將它們放在一個大字符串中,事實上,很多時候您需要單獨處理命令參數。

虛擬機將識別爲main方法。只有一個主簽名允許是public static void main(String[] args)

0

我還沒有看到主要參數除String []參數以外的任何參數。爲什麼不是一個字符串或整數數組?

是的,你可以採取任何StringInteger爲參數,但是這將成爲一個不同的功能main()方法,而不是使用Java來啓動程序之一。編譯後,java搜索public static void main(String[] args){}方法開始。如果你改變參數,那麼你的程序將不會運行。現在使用數組將只覆蓋數組可以允許的特定類型的值,例如int[]只會存儲int值,類似地String只能有一個值,而您可能希望有多個參數。

如果有辦法指定主功能的輸入,請舉例說明。

是的,有辦法使用命令行(對於Windows)和終端(對於linux/unix)傳遞參數。

  1. 使用javac Filename.java
  2. 運行Java程序與參數一起編譯Java程序java FileName param1 param2 param3 (參數1,參數2,參數3是要傳遞參數)。
1

不,你的主要方法不能拿只是一個字符串,主要方法必須使用數組語法或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看起來是類的「主要」方法的起點。所以,如果你想在你的課堂上有一個「主要」方法,那麼你必須從上面的語法中選擇一種。

相關問題