我们可以在运行时提到数组大小吗?

时间:2016-01-06 17:50:51

标签: java arrays

根据我的理解,我们需要在编译时定义数组大小。但是根据下面的代码,似乎我们也可以在运行时提供数组大小。

public class Test { 

    public static void main(String args[]){ 

        Scanner scan = new Scanner(System.in);

        int length= scan.nextInt();

        int arr[] = new int[length];

        for(int i =0; i < length;i++){
            arr[i]=i;
        }
        for(int data : arr){
            System.out.println("Data: "+data);
        }

    }
}

如果有人能解释我的行为,我真的很感激。

3 个答案:

答案 0 :(得分:0)

是的,您可以将int类型的任何内容传递给new T[<int>]构造函数,例如您也可以执行此操作:

int userInput = new Scanner(System.in).nextInt();
int len = 12 + 14 * 3 / userInput;
byte[] arr = new byte[len];
// arr has now the size as specified by len.

答案 1 :(得分:0)

你可以这样 -   你的程序真的不介意你在那个框中写的内容(只要它是一个合理的数组数据结构 - 小于Integer.MAX_VALUE和非负数),直到它开始运行它。 所以,如果你写

int[] box = new int[4];

Java在构建它之前并不知道数组的长度是4.事实上,在代码运行之前,数组甚至都没有初始化。

在这种情况下,有意义的是你可以使用变量作为数组长度,只要程序运行该行代码时,变量就是数组长度的合理数字。

答案 2 :(得分:0)

在Java中,您可以创建一个数组,其大小将在运行时确定。

从你的代码:

int arr[] = new int[length];

在运行时到达此行时,程序会分配一个整数数组,其大小等于变量length的当前值,并通过arr

引用它