2015-08-17 80 views
0

public static void main (string[] args)是一個主要的方法,必須給一個字符串數組作爲參數。指定主要方法需要的參數類型的目的是什麼?

但是,當我運行一個程序時,主方法會自動運行,而不需要用參數顯式調用它。

因此,我有以下問題:

  • 是否的主要方法不管參數的類型?
  • 在某些情況下,人們會用參數顯式調用主方法嗎?如果是這樣,這種情況的例子是什麼?

回答

3

主要方法的參數類型是否重要?

是。 JVM使用public static main(String[] args)作爲通用Java應用程序的執行入口點。換句話說,這就是JVM將把執行從其自己的內部加載和初始化例程轉交給自己的字節碼的地方。除非您在容器(例如GlassFish)或框架(例如JavaFX)中執行應用程序,否則您需要爲您的代碼設置此入口點。按照慣例,它是public static main(String...)

有沒有這樣的情況下,人們會明確地調用帶參數的主要 方法?如果是這樣,這種情況的例子是什麼?

參數傳遞給main(...)主要來自兩個地方:

  • 命令行。當您從shell或Windows內的命令行啓動Java應用程序時,可以在要執行的JAR文件的名稱後鍵入一些其他數據。這些附加數據被處理成一串字符串,並傳遞給您的main()方法。

  • 配置設置。大多數IDE允許您爲項目指定命令行參數。您可以在此設置中將參數傳遞到入口點(當您構建並運行項目時),就像在命令行中一樣。

正如戴夫所說,你自己的代碼不會調用main(...)方法本身。它的目的只是成爲切入點。

+0

當我在命令行鍵入'java文件'沒有任何參數'文件'後,我只是給主空字符串作爲參數? – qaz

+0

要從命令行執行的Java項目必須以這種方式構建,並在其JAR文件中包含MANIFEST.INF文件。一旦構建爲可執行文件,它可以作爲'java -jar .jar '執行。在這種情況下,'par's將被處理成一個String數組並傳遞給'main(...)'方法。 – scottb

2
  1. 當然, JVM僅自動調用main(String[])。它專門用於從命令行獲取字符串參數。
  2. 這只是另一種方法:雖然它幾乎總是用作入口點,但沒有任何技術原因可以像其他任何靜態方法一樣使用它。我不會,因爲它是非典型和非交流。
+0

@qaz ...命令行參數,就像我說的。 –

+0

對不起。讓我澄清一下。當我在'* File *'之後沒有任何參數的命令提示符下鍵入'java * File *'時,用於調用main方法的字符串是什麼?它只是一個空的字符串? – qaz

+0

@qaz它不是「一個字符串」,它是一個字符串數組。如果沒有任何命令行參數,則數組不會有任何元素。順便說一句,這是無價的測試,順便說一句。 –

2

在Java編程語言中,每個應用程序都必須包含一個main方法,其特徵是:

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

修飾符公共的和靜態可以任意順序編寫(公共靜態或靜態公共),但慣例是使用公共靜態,如上所示。你可以根據需要命名參數,但大多數程序員選擇「args」或「argv」。

主要方法類似於C和C++的主要功能;它是您的應用程序的入口點,隨後將調用您的程序所需的所有其他方法。

主要方法接受一個參數:一個String類型的元素數組。

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

這個數組是通過運行系統將信息傳遞到您的application.`機制

你可以閱讀一些here和主非常實用的Java文檔是here

另外對於你的第二個問題,是的,你可以做到這一點,但我不建議。

相關問題