簡體   English   中英

為什么在Java中將命令行參數作為String數組傳遞?

[英]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個單詞)之間存在差異

  1. C程序員熟悉這種格式。

  2. 綠色團隊決定以這種方式傳遞參數。

  3. 將命令行與元素分開取決於平台,並且(我認為)由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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM