2013-12-20 22 views
11

我寫了一個這樣的課,並命名爲Solution.java*在java的主要參數列表中表示什麼?

public class Solution { 
    public static void main(String[] args) { 
     System.out.println(args.length); 
    } 
} 

,但是當我在終端運行它,我得到了這樣的結果:

> /Users/WangWei java Solution * 
18 
> /Users/WangWei 

爲什麼18?

回答

21

這可能是您的工作目錄中的文件數量。

*的結果並不特定於Java。它特定於您正在使用的環境,即工作目錄和用於運行java命令的shell(Windows命令提示符,bash,...)的種類。這是因爲在啓動進程之前,shell會處理並評估命令行。它取代了*

要保留*作爲命令行參數,你需要引用它。

java Solution '*' 
+1

__NOT雙quotes__;使用_single quotes_以防止shell的解釋。 – devnull

+1

即使在* nix平臺上,也應該使用單引號以防止shell解釋字符。嘗試說'echo「$ HOME」'和'echo'$ HOME''來計算差異。 – devnull

+1

建議更改引用。 –

7

你的外殼解釋當前文件夾中的內容 - 有在傳遞18個文件使用單打報價至避免解釋星號

java Solution '*' 
3

您的目錄中的文件數量。

18顯示18個文件存在於您的目錄中。

4

只需添加到您的代碼,你會看到:

for(String line: args) 
    System.out.println(line); 
相關問題