main(String args [])是不是动态数组?

时间:2013-11-09 16:43:44

标签: java arrays

我知道在public static void main(String args[]) args中是一个存储命令行参数的数组。但由于命令行参数是在运行时传递的,因此数组args[]是一个动态数组吗?在Java中我们知道ArrayList用于完成这种工作,那么一个简单的数组对象如何在运行时存储这些参数呢?

4 个答案:

答案 0 :(得分:3)

Java数组的大小可以在运行时定义,而不仅仅是编译时(与C堆栈分配的数组不同)。但是,一旦创建了数组,就无法更改它的大小。

在运行时创建一个数组是完全有效的。创建后,无法更改大小:

    int argCount = 5;
    // ...
    String test[] = new String[argCount];

ArrayList允许您在运行时增大和缩小基础列表的大小。

答案 1 :(得分:3)

每个数组的大小都是在运行时确定的。非动态的部分是在创建之后数组无法更改其大小,并且传递给main的数组也是如此。

答案 2 :(得分:1)

传递给每个函数的每个数组都是动态的,就像数组一样 来自被调用者的前瞻性动态。至于主要的特例;那里 是一种叫做globbing的机制,它是shell(或命令处理器)的 操作系统运行然后调用Main函数(有时也调用 一个切入点)。但这是操作系统(和JVM)本身的功能。

答案 3 :(得分:0)

为什么你认为,args数组必须是动态的? java虚拟机只调用main方法并将命令行参数作为String数组传递。这背后没有“神奇”了!