我觉得应该是创建新的数组b,
以后就用b来代替a吧

解决方案 »

  1.   

    首先说明一下:ArrayList不是数组,是新的集合框架,要实现动态数组可以用Vector实现,或者使用Collection接口实现,程序中下标越界,当然会是错误
      

  2.   

    改成如下:
    public class A {
    public static void main (String[] args) {
    String[] a={"a","b","c","d"};
      String[] b=new String[10] ;
    for (int i=0;i<4;i++) {
    b[i]=a[i];
    }
    a=b;
    a[4]="e";
    for(int i=0;i<=4;i++) {
    System.out.println(a[i]);
    }
            }
    }
    解释:
    private static void add(String[] a) 方法中传递的参数a是一个引用,它在方法体当中是不能更改其值的,也就是说不能指向另一个内存单元。
      

  3.   

    使用System.arraycopy()方法,将一个数组的内容拷贝到另一个数组中,可以实现。
      

  4.   

    要改变数组的大小,通常的做法是:public class TestArray {
        public static void main(String[] args) {
            String[] a = { "a", "b", "c", "d" };
            String[] b = new String[5];
            System.arraycopy(a, 0, b, 0, a.length);
            a = b;
            a[4] = "e";
            for (int i = 0; i < a.length; i++) {
                System.out.println(a[i]);
            }
        }
    }也可以这样:
    public class TestArray {    public String[] a = new String[0];    private static void add(TestArray test) {
            String[] b = new String[5];
            for (int i = 0; i < 4; i++) {
                b[i] = test.a[i];
            }
            test.a = b;
        }    public static void main(String[] args) {
            String[] a = { "a", "b", "c", "d" };
            TestArray test = new TestArray();
            test.a = a;
            add(test);
            a = test.a;
            a[4] = "e";
            for (int i = 0; i < a.length; i++) {
                System.out.println(a[i]);
            }
        }
    }