如果数组是对象并存储在堆上,为什么要在Java中指定数组的大小? 我来自C++背景,我刚刚开始学习java。我无法理解为什么在编译之前需要提供数组的大小,即使它是一个对象并且存储在堆上
欢迎任何有助于我理清概念的示例。如果您创建了一个数组如果数组是对象并存储在堆上,为什么要在Java中指定数组的大小? 我来自C++背景,我刚刚开始学习java。我无法理解为什么在编译之前需要提供数组的大小,即使它是一个对象并且存储在堆上,java,arrays,Java,Arrays,欢迎任何有助于我理清概念的示例。如果您创建了一个数组 int[] ia = new int[0]; 它的大小以后无法更改,因此如果尝试添加值,则会出现越界异常。如果这对您的程序不起作用,您应该使用ArrayList,它是一个没有定义大小的对象,因此在执行此代码时: ArrayList<Integer> al = new ArrayList<Integer>(); for(int q = 0; q < 10000; q++){ //Infinitely add in
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);
}
ArrayList al=new ArrayList();
对于(int q=0;q<10000;q++){//无限地将int添加到ArrayList
int i=1;
加上((整数)i);
}
如果创建数组
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);
}
ArrayList al=new ArrayList();
对于(int q=0;q<10000;q++){//无限地将int添加到ArrayList
int i=1;
加上((整数)i);
}
我不明白为什么我需要在编译之前提供数组的大小
编译前不需要提供大小。例如,以下代码允许用户在运行时提供大小:
最终扫描仪输入=新扫描仪(System.in);
系统输出打印(“数组大小:”);
final int[]数组=新int[input.nextInt()];
System.out.printf(“数组大小为%d.\n”,array.length);
如果你想要一个易于调整大小的数组状的对象,你会觉得很好
我不明白为什么我需要在编译之前提供数组的大小
编译前不需要提供大小。例如,以下代码允许用户在运行时提供大小:
最终扫描仪输入=新扫描仪(System.in);
系统输出打印(“数组大小:”);
final int[]数组=新int[input.nextInt()];
System.out.printf(“数组大小为%d.\n”,array.length);
如果您想要一个易于调整大小的类似数组的对象,可以选择非常好的方法。您不必总是指定大小。始终可以使用初始值设定项列表:
int[]nums=newint[]{1,2,3}代码>不清楚您到底在问什么。在C++中堆上创建数组时,还需要指定其大小;在这方面,C++和java没有区别。也许一点代码可以让您更清楚地了解您的要求。@LoganKulinski,它指定了一个大小数组3@Manav您可能正在寻找<代码> ARAYLISTAB/CODE>。@ C++中的MANAV,您必须选择将数组存储在堆栈上或堆上(在两种情况下,您需要指定分配的大小)。您谈论的不是数组,而是使用(并重新分配)底层数组的更高级数据结构(向量)。Java也有这些属性-ArrayList
是最接近的一个。您不必总是指定大小。始终可以使用初始值设定项列表:int[]nums=newint[]{1,2,3}代码>不清楚您到底在问什么。在C++中堆上创建数组时,还需要指定其大小;在这方面,C++和java没有区别。也许一点代码可以让您更清楚地了解您的要求。@LoganKulinski,它指定了一个大小数组3@Manav您可能正在寻找<代码> ARAYLISTAB/CODE>。@ C++中的MANAV,您必须选择将数组存储在堆栈上或堆上(在两种情况下,您需要指定分配的大小)。您谈论的不是数组,而是使用(并重新分配)底层数组的更高级数据结构(向量)。Java也有这些-ArrayList
是最接近的一个