我想知道我是否可以根据需要重新定义数组。我试着这样做,似乎没有任何问题。我用这些步骤创建了一个数组
//step 1
String parole[];
//step 1
parole = new String[1];
parole[0] = "ciao";
//step 1
parole = new String[2];
parole[1] = "buongiorno";
我问这个因为我脑子里有什么东西告诉我,我不能这样做。也许我在某个地方的某处读过......
答案 0 :(得分:3)
当然,您可以创建一个新的数组对象并将其分配给数组引用。
但如果你认为假释[0]在你的最后一步之后仍然会有“ciao”,你就错了。
答案 1 :(得分:0)
是的,你可以,但你需要将第一个数组复制到一个新数组中。
检查此示例代码:
public class ArrayCp {
public static void main(String[] args)
{
String[] primoArray = new String[1];
primoArray[0] = "Ciao";
// Copio il primo array nel secondo cambiandone la dimensione (secondo parametro)
String [] secondoArray = Arrays.copyOf(primoArray, 2);
secondoArray[1] = "Buona Sera";
for(String s : secondoArray) {
System.out.println("Elemento: " + s );
}
}
}
然而,最好使用ArrayList:
ArrayList<String> theArr = new ArrayList<String>();
theArr.add("Ciao");
theArr.add("Buona Sera");
theArr.add("Buona Notte");
并使用
返回一个简单的数组String [] resArray = theArr.toArray(new String[theArr.size()]);
答案 2 :(得分:0)
制作一个“new String []”就是这样,制作一个新的字符串数组。这意味着您之前在引用中拥有的任何数据都会被“新”对象覆盖。 (如果你对字符串[]有其他引用,那么它就不会丢失了)
所以,简而言之,不,你不能“重新标注”一个数组。
在您的情况下,最好使用ArrayList,它提供动态调整大小(并且更容易使用)。
答案 3 :(得分:0)
我同意@BigMike 您应该尝试使用ArrayList,因为它内置了容量方法,这比我们手动操作要好得多。 它完成amortized time中的工作,这对我们来说很难实现。
有关详细信息,请参阅this。