java System.arraycopy方法的问题

publicstaticvoidmain(String[]args){int[]a={1,2,3,4,5};int[]b=newint[10];for(inti:b){b... public static void main(String[] args) {
int[] a={1,2,3,4,5};
int[] b=new int[10];
for (int i : b) {
b[i]=0;
}
System.arraycopy(a, 1, b, 0,4);
for (int i : b) {
System.out.println(b[i]);
}

}
我想把1~5 复制到数组B的前5个位置 但显示的结果是 2345011111 这是怎么回事?求解释
展开
 我来答
Jseven_jy
推荐于2016-08-06 · TA获得超过8123个赞
知道大有可为答主
回答量:2499
采纳率:100%
帮助的人:1206万
展开全部
有几个小问题哦。。。。
for (int i : b) {
b[i]=0;
}
这样的赋值是不对的。。。。。
数组b 的初值都是0,而for (int i : b)表示的意思是依次取b中的每个值,而b里面的值都是0,所以无论循环多少次,执行的都是同一条语句b[0] = 0;
如果是 for (int i : b) {
b[i]=1;
}
只有b[0] = 1, 其它的都是0

System.arraycopy(a, 1, b, 0,4);这个应该改为System.arraycopy(a, 0, b, 0,5);
否则只能复制2~5
public static void arraycopy(Object src,
int srcPos,
Object dest,
int destPos,
int length)
参数:
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。

for (int i : b) {
System.out.println(b[i]);
这个应该改成
for (int i : b) {
System.out.println(i);

最后修改后的代码如下,我已经测试过了。。
public static void main(String[] args) {
int[] a={1,2,3,4,5};
int[] b=new int[10];
for (int i : b) {
b[i]=0;
}
System.arraycopy(a, 0, b, 0,5);
for (int i : b) {
System.out.print(i);
}

}

希望对你有帮助。。。。仍有问题可以HI我。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式