java如何将数组类型转换为对象类型?例如,假设我们有一个int数组'src',并且我们使用System.arraycopy(Object src,int srcPos,Object dest,int destPos,int length),那么java如何将一个原始类型数组转换为Object的一个实例?在复制到'dest'的同时,它如何知道如何在不知道类型的情况下复制它?Java - 将数组类型转换为对象类型转换
是否只是通过做副本字节一个字节像一个克隆,因为当我运行下面的代码
int[][] a = new int[][] {{1,2,3,4,5},{6,7,8,9,0}};
int[][] b = new int[a.length][a[0].length];
System.arraycopy(a,0,b,0,a.length);
System.out.println(java.util.Arrays.toString(a));
b[1][3]=100;
System.out.println(java.util.Arrays.toString(a[0]));
System.out.println(java.util.Arrays.toString(a[1]));
我得到以下输出
[[[email protected], [[email protected]]
[1, 2, 3, 4, 5]
[6, 7, 8, 100, 0]
什么是输出[[[email protected], [[email protected]]
?它是否像数组a [0]和[1](如C/C++中的指针数组)的地址?
另外,如果我改变了b [1] [3],那么[1] [3]如何改变以及制作副本的正确方法是什么?
编辑:另外如何java.lang.reflect.Array.getLength(Object array)
工作?
编辑:我想指出的是,我改变的值b [1] [3],但在打印时一个 [1],该值一个 [1] [3]也被改变。为什么会发生?
'System.arraycopy将创建一个新的数组,所以变成了b,这对b没有影响。'我假设你的意思是'System.arraycopy将创建一个新的数组,所以变成了b,没有对a.'的影响。这仍然是错误的,因为'arraycopy'执行浅拷贝,所以即使'a!= b','a [i] == b [i]'是真的,并且改变b [i] [j]会改变一个[i] [j]。 – Eran