[英]Isn't main(String args[]) a dynamic array?
我知道在public static void main(String args[])
args
是一個存儲命令行參數的數組。 但由於命令行參數是在運行時傳遞的,因此數組args[]
是一個動態數組嗎? 在Java中,我們知道ArrayList用於完成這種工作,那么一個簡單的數組對象如何在運行時存儲這些參數?
Java數組的大小可以在運行時定義,而不僅僅是編譯時間(與C堆棧分配的數組不同)。 但是,一旦創建了數組,就無法更改數組的大小。
在運行時創建一個數組是完全有效的。 創建后,無法更改大小:
int argCount = 5;
// ...
String test[] = new String[argCount];
ArrayList
允許您在運行時增大和縮小基礎列表的大小。
每個數組的大小都是在運行時確定的。 不動態的部分是數組在創建后不能改變其大小,並且傳遞給main
的數組也是如此。
傳遞給每個函數的每個數組都是動態的,因為數組從被調用者的角度來看是動態的。 至於主要的特例; 有一種稱為globbing的機制,操作系統的shell(或命令處理器)運行,然后調用Main函數(有時也稱為入口點)。 但這是操作系統(和JVM)本身的功能。
為什么你認為,args數組必須是動態的? java虛擬機只調用main方法並將命令行參數作為String數組傳遞。 這背后沒有更多的“魔力”了!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.