int[][] a = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
int[][] b = new int[3][3];
System.arraycopy(a,0,b,0,b.length);
a[2][2] = 1;
System.out.println(b[2][2]);结果是1这和 a = b; 有什么区别....
怎么完全复制数组,让b的内容在内存里独立占一块,改变a的同时b保持原样不变?
int[][] b = new int[3][3];
System.arraycopy(a,0,b,0,b.length);
a[2][2] = 1;
System.out.println(b[2][2]);结果是1这和 a = b; 有什么区别....
怎么完全复制数组,让b的内容在内存里独立占一块,改变a的同时b保持原样不变?
可以实现cloneable
也可以重写clone()
Java的克隆分为浅拷贝和深拷贝
当然前提你需要了解一下Java的反射机制
回答:怎么完全复制数组,让b的内容在内存里独立占一块,改变a的同时b保持原样不变?System.arraycopy(a,0,b,0,b.length);--->你上面的做法已经完成了你的想法。
{
public static void main(String [] args)
{
int[][] a = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
int[][] b = new int[3][3];
System.arraycopy(a,0,b,0,b.length);
a[2][2] = 1;
System.out.println(b[2][2]);
System.out.println(a == b);
System.out.println(a[0] == b[0]);
}
}楼主跑一下这个程序应该就明白了:)
public static void main(String args[]){
int num1[][]=new int[][]{{1,2,3},{4,5,6},{7,8,9}};
int [][]num2=new int[3][3];
System.arraycopy(num1,0,num2,0,num2.length);
num2[2][2]=45;
System.out.print(num1[2][2] +" ");
System.out.print((num1==num2) + "\t");
System.out.print((num1[2]==num2[2] )+ " ");}
}
运行结果为:45 false true
这是怎么一回事???高手解答一下