学习数组复制的过程中,代码如下:
package test;
import java.util.*;
public class SelfStudy_Array {
public static void main(String[] args) {
int []a={1,222,56,4,33}; //define the array with 5 elements static
int []b = a; //copy the array a to b
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b)); Arrays.sort(a);
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
}
}
实际运行结果
[1, 222, 56, 4, 33]
[1, 222, 56, 4, 33][1, 4, 33, 56, 222]
[1, 4, 33, 56, 222]请问为何下划线处的数组b不是保留先前的内容,而是随着数组a的排序调整而变化。
如果需要保持数组b的内容不变,这段代码应该怎样调整?
package test;
import java.util.*;
public class SelfStudy_Array {
public static void main(String[] args) {
int []a={1,222,56,4,33}; //define the array with 5 elements static
int []b = a; //copy the array a to b
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b)); Arrays.sort(a);
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
}
}
实际运行结果
[1, 222, 56, 4, 33]
[1, 222, 56, 4, 33][1, 4, 33, 56, 222]
[1, 4, 33, 56, 222]请问为何下划线处的数组b不是保留先前的内容,而是随着数组a的排序调整而变化。
如果需要保持数组b的内容不变,这段代码应该怎样调整?
当你对数组进行操作后,a,b都要变化啊
另外,我把代码改为
int []b=new int[a.length];
System.arraycopy(a, 0, b,0, a.length);
成功了,谢谢。
谢谢帮我指明。
我也搜了Arrays.copyOf的方法,代码改成下面就可以了。
int[] b = Arrays.copyOf(a, a.length);
System.out.println(Arrays.toString(b));谢谢大家的回复,受教了。
这样赋值 ,则b和a执行的都是一块内存空间,所以a变化 或者b变化 ,两者都会变化 ;
你可以在
int []b = a; //copy the array a to b
下面加上
System.out.println("a = " + a) ;
System.out.println("b = " + b) ;看看打出来的应该是一样的即是@后面的数据是一样的
int []a={1,222,56,4,33}; //define the array with 5 elements static
int []b = new int[a.length]; //copy the array a to b
System.arraycopy(a, 0, b, 0, a.length);
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b)); Arrays.sort(a);
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));