[英]Why are command line arguments passed as a String array in Java?
在Java中,命令行參數作為String數組傳遞到我的程序中,如下所示:
public static void main(String[] args ) { }
為什么要使用數組而不是單個String?
我認為,如果將命令行參數作為單個String傳入,並且讓我的程序根據需要進行處理,它將更加靈活/適應性強。 通過使用String數組而不是單個String可以獲得任何設計優勢嗎?
為什么要使用數組
程序啟動時,將為它們傳遞C字符串數組,這是此輸入的自然且最簡單的轉換。
,而不是單個String?
這是因為hello
world
(2個單詞)和hello world
(1個單詞)之間存在差異
C程序員熟悉這種格式。
綠色團隊決定以這種方式傳遞參數。
將命令行與元素分開取決於平台,並且(我認為)由Shell完成。 因此,將命令行作為字符串數組傳遞可以創建可移植的跨平台代碼。
真正的原因是因為Unix就是這樣做的。*
每個Unix程序,無論用什么語言編寫,都會接收一個字符串參數數組。 自從Unix於1970年創建以來,就是這樣。 Windows甚至MS-DOS都已存在很久了。
其他一些回答說:“ ...因為C就是這樣做的。” 這幾乎是同一件事:C之所以這樣做,是因為C是Unix最初最流行的編程語言。
* Linux也是如此。 Linux不是Unix,因為“ Unix”是一個要花很多錢的商標,但是Linux力求盡可能接近Unix。
讓我們考慮以下程序
public static void main(String[] commandLineArguments) {
int argumentLength = commandLineArguments.length;
if (argumentLength == 2) {
System.out.println("User's 1st Name:" + commandLineArguments[0]
+ " Last Name :" + commandLineArguments[1]);
} else {
System.out.println("User's only entered 1st name :"
+ commandLineArguments[0]);
}
}
如果用戶輸入James Gosling,則運行時系統會將空格字符解釋為命令行參數的分隔符,並且該程序的輸出為
User's 1st Name:James & Last Name is:Gosling
現在,如果命令行參數作為字符串而不是字符串數組傳遞,那么用戶將如何在程序中傳遞多個參數? 字符串數組允許用戶傳遞多個參數,而不是String 。 但是,如果您想將多個字符串作為單個參數傳遞,該怎么辦? 答案是:您可以使用雙引號(系統使用)將它們連接起來,例如“這是一個參數”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.