import java.util.Arrays;
public class A {
public static A[] a={};//这里定义数组,难道是 定义成 Arrays ?抑或是声明引用而已 public void test()
{
System.out.println(a.length);
a = (A[]) Arrays.copyOf(a,a.length + 1);
System.out.println(a.length);
a = (A[]) Arrays.copyOf(a,a.length + 1);//临时Arrays,函数结束后(超过作用域),内存还能继续使用?
System.out.println(a.length);
}
public static void main(String[] args) {
A one = new A();
one .test();
}
}运行结果:
0
1
2
public static int[] copyOf(int[] original, int newLength) {
int[] copy = new int[newLength];
System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));
return copy;
}
Arrays的copyOf()方法传回的数组是新的数组对象,所以改变传回数组中的元素值或者数组长度,是不会影响原数组的。比如:
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOf(arr1, arr1.length);for(int i = 0; i < arr2.length; i++)
System.out.print(arr2[i] + " ");
运行结果为:1 2 3 4 5copyOf()的第二个自变量指定要建立的新数组长度,如果新数组的长度超过原数组的长度,则保留数组默认值,例如:
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOf(arr1, arr1.length+1);for(int i = 0; i < arr2.length; i++)
System.out.print(arr2[i] + " ");
运行结果为:1 2 3 4 5 0欢迎来提问