JAVA中如何动态改变数组长度 动态数组 arraycopy

如题所述

java中的数组一旦被定义长度是不允许修改长度的,如果题主希望实现类似的功能可以采用ArrayList。ArrayList的底层结构就是数组。当ArrayList实例化时会默认设置一个长度,当长度不够用时会自动扩展现有长度的1/2.(假设初始数组长度为10,现在变成了15)


System.arraycopy(Object src,int srcPos,Object dest,int destPos,int length )能够实现数组复制的功能。

假设有数组a(src),数组b(dest),我们希望把a数组中从下标为2(srcPos)长度为3(length)的元素复制到b的下标为4(destPos)开始的元素中。java代码示例如下:

int a = [1,3,5,7,9];
int b = [2,4,6,8,0,2,4];
System.arraycopy(a,2,b,4,3);

//最终b的内容为[2,4,6,8,5,7,9];

但是如果注意API的话会发现arraycopy有几个限制

1、a,b的元素类型必须相同(int和Integer这里也是需要区分的)

2、数组不能越界,也就是srcPos+length不能超过a的长度;desPos+length也不能超过b的长度,否则就会报数组越界的一场。这也说明了无法实现数组长度的动态扩展。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-27
arraycopy是数组复制的意思,给你个例子。
public class ArraycopyTest {
// arraycopy(Object src, int srcStartIndex, Object dest, int destStartIndex,
// int length)
// 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
// srcStartIndex:原数组中要开始复制的第一个元素的位置
// destStartIndex: 目标数组中要开始替换的第一个元素的位置
// length: 要复制的元素的个数
public static void main(String[] args) {
// 静态初始化两个长度不同的数组
int src[] = { 1, 2, 3, 4, 5, 6 };
int dest[] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };

// 将数组src的4个元素copy到数组dest中
System.arraycopy(src, 1, dest, 2, 4);

// 输出数组dest
for (int i = 0; i < 10; i++) {
System.out.println(dest[i]);
}
}
}
第2个回答  2013-03-27
arraycopy是数组复制的意思,给你个例子。
public class ArraycopyTest {
// arraycopy(Object src, int srcStartIndex, Object dest, int destStartIndex,
// int length)
// 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
// srcStartIndex:原数组中要开始复制的第一个元素的位置
// destStartIndex: 目标数组中要开始替换的第一个元素的位置
// length: 要复制的元素的个数
public static void main(String[] args) {
// 静态初始化两个长度不同的数组
int src[] = { 1, 2, 3, 4, 5, 6 };
int dest[] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };

// 将数组src的4个元素copy到数组dest中
System.arraycopy(src, 1, dest, 2, 4);

// 输出数组dest
for (int i = 0; i < 10; i++) {
System.out.println(dest[i]);
}
}
}
第3个回答  2013-03-26
java 动态数组一般使用 Vector 或 ArrayList。
Vector v = new Vector();
v.add("123");
v.add("456");
自适应长度变化。本回答被网友采纳
第4个回答  2013-03-26
新建一个数组,用Arrays.copy把原来数组的内容复制进新的数组里面就得了。。。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网