在java中,我通过这一行创建了一个String类型的数组,这一行String [] ars = {};
没有显示错误。但是当我试图ars[i++] = g;
在 i 等于 0 的这一行插入一个字符串时,它给了我java.lang.ArrayIndexOutOfBoundsException: 0
为什么?
5 回答
数组是固定大小的,创建后不能向其中添加元素。由于您的数组的大小为 0,因此在索引 0 处访问它是超出范围的。
如果您想String
在创建集合后将元素添加到您的集合中,那么您可能需要考虑使用一个集合,例如java.util.ArrayList<String>
. 你可以像这样使用它:
//import java.util.*;
ArrayList<String> ars = new ArrayList<String>();
ars.add(g);
数组的大小是固定的。如果索引等于或超过数组大小,则无法添加元素。即只能使用0
to array.length
- 1 的值。在这里,您尝试将索引处的值分配给一个0
大小为零的数组,从而导致AIOOBE
.
使用一个集合,例如ArrayList
在添加元素时如果需要可以扩展其容量。
在 java 中,您需要指定您想要的数组有多大,并且您不能在不创建新数组的情况下更改该大小。
最好的方法是使用ArrayList或List的其他实现。
不要使用数组。使用 ArrayList。Java中的数组在分配时是固定长度的,永远不能增加。您的代码使 ars 引用长度为 0 的数组,因此除非您将其指向一个新数组,否则它永远不会更大。这就是 ArrayList 类的目的——成为一个可以随时间增长/缩小的可变长度数组。
出现此错误会导致您在 [0] 中没有任何内容,在 {} 中没有任何内容;
这样,你就有了:字符串 a = {"zero", first},其中 a[0] = 零,a[1] = first
你也可以试试,这样;
声明一个 int tam = 0;
并创建你的数组: String a = new String[tam];
所以在你可以改变数组的长度之后,改变变量 tam;