我来自C ++背景,我刚开始学习java。我无法理解为什么在编译之前我需要提供数组的大小,即使它是一个对象并存储在堆上?
欢迎任何可以帮助我理清概念的例子。
答案 0 :(得分:0)
如果你创建一个数组
int[] ia = new int[0];
以后无法更改它的大小,因此如果您尝试添加值,则会出现超出范围的异常。如果这对你的程序不起作用,你应该使用一个ArrayList,它是一个没有定义大小的对象,所以虽然这个代码应该可行但是很糟糕:
ArrayList<Integer> al = new ArrayList<Integer>();
for(int q = 0; q < 10000; q++){ //Infinitely add ints to the ArrayList
int i = 1;
al.add((Integer) i);
}
答案 1 :(得分:0)
我无法理解为什么在编译之前需要提供数组的大小...
编译前无需提供大小。例如,以下代码允许用户在运行时提供大小:
final Scanner input = new Scanner(System.in);
System.out.print("Array size: ");
final int[] array = new int[input.nextInt()];
System.out.printf("The array size is %d.\n", array.length);
如果您想要一个易于调整大小的数组对象,ArrayList
s非常好。