2012-08-14 85 views
29

你怎麼能很好地解釋,到初學者String args[]的意義,並在使用static說明摘錄如下?的「字符串ARGS []」和靜態「公共靜態無效的主要(字串[] args)」

class FirstApp { 
    public static void main(String[] args) { 
     ... 
    } 
} 
+0

只有一個'main()'可以運行,'String'數組對於初學者來說有點高級。我只用過它們稍微高級的程序,它們需要遍歷數組/集合。 – Makoto 2012-08-14 13:02:13

+7

你想解釋多少,他們有多少初學者?當我第一次開始使用Java時,我的教授直到我們開始創建自己的功能之後才說「這就是它的樣子」。之後,他解釋了String args []的用途。 – 2012-08-14 13:04:33

+3

應該可能是'String [] args',而不是'String args []',否則初學者會對數組語法感到困惑。 – 2012-08-14 13:16:37

回答

27

我想指出的新手Wiki article on the Main function,然後用此補充。

  • 的Java只啓動與特定public static void main(String[] args)簽名運行的程序,以及一個能想到像自己的名字的簽名 - 這是Java的怎麼能告訴別人的main()和一個真正的main()之間的差異。

  • String[] args是由一個空格分隔的String的集合,它可以輸入到終端上的程序中。更多的時候,初學者不會使用這個變量,但它總是在那裏以防萬一。

+0

你是什麼意思「更多時間不是」? – 2016-12-14 18:11:03

+1

@Acd:有*可能*是一個初學者想要傳遞命令行參數的場合,但是誠實地說,每次運行應用程序時都不會發生這種情況。 – Makoto 2016-12-14 18:53:42

+0

什麼是它從未使用過的用途。爲什麼要把它放在 – 2016-12-14 18:54:54

-2
當你從控制檯啓動應用程序

,你做你的Java的罐子(文件名)(參數),所以如果你運行一個程序,它從文件中讀取,你會做

如果你的程序被稱爲READFILE,你做它的一個可執行版本後(我就不用解釋瞭如何做到這一點的一部分),你必須勞克程序。

java -jar readFile.jar C:/user/Matt/documents/myText.txt 
    ^launch program  ^args 

文件位置是程序的args []。

+19

如果我是初學者,這個探索會讓A)讓我哭泣,B)根本不解釋「靜態」 – 2012-08-14 13:03:28

0

要保持初學者的心態你能解釋所有的命令行automaticaly FO一個字符串數組(該String[])在splite。

static,你必須解釋,它不是像其他領域:它是在JVM獨特,即使你有類

所以main是靜態的一千情況,因爲這是唯一的出路發現它在一個jar(在它自己的類鏈接)。

...你看編碼後,你的任務開始......

+0

確切的說......但它對於初學者來說。你使用多個主類加載器嗎?我不知道該模式或公用事業去做。 – 2012-08-14 13:19:13

2

如果我是這樣解釋的人我會說我們會得到它後,現在你需要知道,運行程序的方法是使用:

public static void main(String[] args) { 
     ... 
    } 

假設他/她知道數組是什麼,我會說參數是一個參數數組,你可以顯示一些很酷的例子。

然後你走了一點關於Java/JVM和東西后,你會得到修飾最終以靜態和公衆以及。

然後,你可以花一些時間談論這些恕我直言的意義。

你可以說其他「酷」的東西,如可變參數,你可以在Java的後續版本使用。

public static void main(String ...args) { 
     //... 
    } 
0

靜態的正常用法是直接訪問函數,無需創建任何對象。和java main一樣,我們不能爲該類創建任何對象來調用main方法。它會自動執行。如果我們想手動執行,我們可以通過在類內部使用main()和在類外部使用ClassName.main來調用。

13
public static void main(string [] args) 

public - 它的訪問說明符表示來自每個我們可以訪問它的地方; static -access修飾符意味着我們可以直接使用類名稱調用此方法而不創建它的一個對象; void - 它的返回類型; main - 方法名 string [] args - 它接受一個字符串數組

4
  • public argument..and存儲它的唯一的字符串類型:它是一個訪問說明符,這意味着它將被公開訪問。
  • static:它是訪問修飾符,這意味着當Java程序加載時,它會自動在內存中創建空間。
  • void:它是一種返回類型,即它不返回任何值。
  • main():它是一個方法或函數名。
  • string args[]:它是一個命令行參數,它是一個字符串格式的變量集合。
47

我分手

public static void main(String args[]) 
在部分

public

這意味着你可以調用從外部類此方法,目前在此。是必需的,因爲此方法由Java運行時系統調用,該系統不在您當前的類中。


static

當JVM使得調用的主要方法有因此被稱爲它必須有靜態方法以允許從類調用現有的類中沒有對象。


void

Java是獨立於平臺的語言,它是否會返回一些值,則該值可能意味着不同的事情不同的平臺。還有其他方法可以在多線程系統上退出程序。 Detailed explaination


main

這方法只是名字。這個名稱是固定的,並且由JVM調用它作爲應用程序的入口點。


String args[]

這些都是String類型的參數,當你運行你的Java應用程序接受。

0

我只是想我會在這一塊芯片。儘管其他人已經很好地回答了。

完整的主要方法聲明應該是:

public static void main(final String[] args) throws Exception { 

} 

的ARG遊戲宣佈最終因爲從技術上他們不應該被改變。它們是用戶給出的控制檯參數。

通常你應該指定一個主拋出異常,使堆棧跟蹤可以呼應,而無需做e.printStackTrace()等

至於數組語法容易安慰。我喜歡這樣。我想這有點像法文和英文的區別。 英語中是「黑色汽車」,法語中是「黑色汽車」。 哪一個是重要的名詞,汽車或黑色?

我不喜歡這樣的事情:

String blah[] = {}; 

這裏的關鍵是,它是一個字符串數組,所以它應該是

String[] blah = {}; 

等等只是一個名字。我個人認爲在Java中有時候可能會以這種方式聲明數組。

+0

嗯..表單聲明: 'String blah [] = {};' 被包含在Java的後續版本中,以幫助來自C和C++背景的程序員。 – Vikas 2016-12-25 21:19:31

相關問題