java数组Arrays.copyOf
做leetcode中的Merge Sorted Array一题时,当nums1数组为空,nums2不为空时,想着用Arrays.copyOf方法直接将nums2复制给nums1,实际上,这样是行不通的。
java 数组 大小确定后 是不能改变的
Arrays.copyOf(originalArray,newLength) 实际上是生成了一个新的数组 即返回这个新数组的地址
以下代码,虽然数组a是引用传递到merge方法中,但是nums1通过Arrays.copyOf方法,被赋予了新的地址,即a数组实际上依然没有任何改变
main{
int[] a = new int[0];
int[] b = new int[1];
b[0] = 1;
merge(a,0,b,1);
System.out.println(a[0]);
}
public static void merge(int[] nums1, int m, int[] nums2, int n) {
System.out.println("merge...");
if(nums2.length==0){
return;
}
if(nums1.length==0){
nums1 = Arrays.copyOf(nums2,nums2.length+1);
System.out.println(nums1[0]);
}
}