改成如下: 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是一个引用,它在方法体当中是不能更改其值的,也就是说不能指向另一个内存单元。
使用System.arraycopy()方法,将一个数组的内容拷贝到另一个数组中,可以实现。
要改变数组的大小,通常的做法是: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]); } } }
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是一个引用,它在方法体当中是不能更改其值的,也就是说不能指向另一个内存单元。
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]);
}
}
}