如何在不声明java范围的情况下创建String类型数组?

时间:2013-07-03 19:45:59

标签: java arrays string exception

在java中,我已经通过这一行创建了一个String类型数组String [] ars = {};此行没有显示错误。但是当我试图通过这一行ars[i++] = g;插入一个字符串,其中i等于0时,它给了我java.lang.ArrayIndexOutOfBoundsException: 0 为什么呢?

5 个答案:

答案 0 :(得分:3)

数组是固定大小的,您无法在创建后向其添加元素。由于您的数组大小为0,因此在索引0处访问它的数据超出范围。

如果要在创建集合后向String s集合中添加元素,则可能需要考虑使用java.util.ArrayList<String>等集合。您可以像这样使用它:

//import java.util.*;
ArrayList<String> ars = new ArrayList<String>();
ars.add(g);

答案 1 :(得分:2)

阵列的大小是固定的。如果索引等于或超过数组大小,则无法添加元素。即,只能使用0array.length - 1的值。在这里,您尝试将索引0的值分配给零大小的数组,从而生成AIOOBE

使用ArrayList等集合,如果需要添加元素,可以扩展其容量。

答案 2 :(得分:1)

在java中,您需要指定您希望Array的大小,并且在不创建新阵列的情况下无法更改该大小。

最好的方法是使用ArrayListList的其他实现。

答案 3 :(得分:1)

不要使用数组。使用ArrayList。 Java中的数组在分配时是固定长度,永远不能增加。你的代码使ars引用一个长度为0的数组,所以除非你把它指向一个新的数组,否则它永远不会更大。这就是ArrayList类的目的 - 是一个可以随时间增长/缩小的可变长度数组。

答案 4 :(得分:0)

这个错误导致你在[0]中没有任何东西,{};

中没有任何内容

这样,你有一些东西:字符串a = {“零”,第一个},其中a [0] = 0,a [1] =第一个

你也可以尝试这种方式;

声明一个int tam = 0;

并创建数组:String a = new String [tam];

所以你可以替换数组的长度, 改变变量tam;