主方法中的数组长度决定

时间:2018-06-12 16:17:06

标签: java arrays main

在Java中,如果在编译时决定数组长度

args的参数长度是多少?
public static void main(String[] args) { ... }

决定运行时间

4 个答案:

答案 0 :(得分:1)

String [] args是main方法接受的参数。它可以是任何长度。您只需要在声明时定义数组的长度。即便如此,它也不一定是字面数字。它只需要固定长度。

String[] s = new String[variable]

变量variable必须是整数,并且可以包含任何值。

答案 1 :(得分:1)

数组长度不是在编译时确定的,而是在运行时确定的。考虑:

String[] makeMeAStringArray(int size) {
    return new String[size];
}

main的arguments数组仅使用java工具中的类似代码创建。

示例(live copy):

class Example
{
    static String[] makeMeAStringArray(int size) {
        return new String[size];
    }
    public static void main (String[] args) throws java.lang.Exception
    {
        int n = (int)(Math.random() * 100);
        System.out.println("n = " + n);
        String[] a = makeMeAStringArray(n);
        System.out.println("a.length = " + a.length);
    }
}

答案 2 :(得分:1)

创建数组时,它是固定长度的。但是,它不必是编译时常量长度。这是有效的,例如:

for (int i = 0; i < 10; ++i)
{
    int[] arr = new int[i]; 
}

将数组传递给方法时:

public void foo(int[] arr) { //...

你没有指定尺寸。它只需要是一个数组。方法签名不强制执行该长度。

因此,这两个方面的组合意味着主要方法的声明方式并不特别。

答案 3 :(得分:0)

数组名称本质上是一个数组地址。您可以声明一个数组String[] args,但在将其指向地址或键入String[] args = new String[N]之前,它不会被初始化。 现在,当一个数组在参数中时,它没有初始化,因为它没有指向任何东西。但是,当您将数组作为参数传递给函数时,例如main(arguments),String [] args在运行时获取arguments数组的地址,然后运行main函数。

当您运行程序并输入一些输入时,Java将输入作为String数组,其中每个参数由输入中的空格分隔,然后将其提供给Java程序中的main函数。因此,字符串数组args []在开头没有初始化,但是“给定”参数字符串数组的地址,这些参数在运行时将作为输入。

希望这有帮助!