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

 我来答
0动感蚂蚁0
推荐于2017-09-23 · TA获得超过391个赞
知道小有建树答主
回答量:177
采纳率:100%
帮助的人:126万
展开全部

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的长度,否则就会报数组越界的一场。这也说明了无法实现数组长度的动态扩展。

匿名用户
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]);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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]);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ThreeSoft
2013-03-26 · 超过56用户采纳过TA的回答
知道小有建树答主
回答量:126
采纳率:100%
帮助的人:61.5万
展开全部
java 动态数组一般使用 Vector 或 ArrayList。
Vector v = new Vector();
v.add("123");
v.add("456");
自适应长度变化。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友97df5c0af
2013-03-26 · TA获得超过568个赞
知道小有建树答主
回答量:490
采纳率:0%
帮助的人:563万
展开全部
新建一个数组,用Arrays.copy把原来数组的内容复制进新的数组里面就得了。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式