动态调整数组长度时遇到点问题
今天在练习动态调整数组长度时遇到点问题,不明白的地方都用红色标注了,请大家帮忙解释下,我先谢谢了代码如下:
public class ChangeArrayLength {
public static void main(String[] args) {
Integer[] ary = new Integer[10];
for(int i=0;i<10;i++){
ary[i] = new Integer(i);
}
ary[0] = new Integer(15);//为什么此处不能改变数组ary的值
for(int i=0;i<ary.length;i++){
System.out.print(i + " ");
}
System.out.println();
Integer[] newArray = ChangeArrayLength.increase(ary);
newArray[10] = new Integer(11);
for(int i=0;i<newArray.length;i++){
System.out.print(i + " ");
}
}
public static Integer[] increase(Integer[] src){
return increase(src,6);
}
public static Integer[] increase(Integer[] src,int length){
if(src == null){
return null;
}
Integer[] result = new Integer[src.length + length];
System.arraycopy(src,0,result,0,2);//此处为什么要复制src的所有项,而不是只复制前两项
return result;
}
}
----------------解决方案--------------------------------------------------------
ary[0] = new Integer(15);//为什么此处不能改变数组ary的值
当然改变了ary[0]的值啊,只是你后来的for循环中打印的是i而不是ary[i]
还有你说的只复制前两项又是什么意思?可以看看API文档里面的arraycopy方法
----------------解决方案--------------------------------------------------------
哦 还真是马虎了 问题已经都解决了
谢谢这位朋友
----------------解决方案--------------------------------------------------------