Java中System.arraycopy()方法问题(这里的0是怎么出现的,有大佬解释以下么?)
源代码如下
其中我调用那个goodCopyOf()方法,使用一个Math.min()方法,按道理应该返回数值小的那个(即原本数组的长度6),为什么最后还是出现新数组长度为10?(话说不清楚,运行结果如下:)

/**
* ClassName:CopyOfTest
* Author:LFM
* Date:2019/6/14 12:35
**/
public class CopyOfTest {
public static void main(String[] args) {
int [] a = {1,2,3,4,5,6};//定义一个整型数组
a = (int[]) goodCopyOf(a,10);
System.out.println(Arrays.toString(a));
}
/**
*@author LFM
*@Description 利用这个方法进行数组的复制会抛出异常
*@date 2019/6/14
*/
public static Object[] badCopyOf(Object[] a,int newLength){
Object[] newArray = new Object[newLength];
System.arraycopy(a,0,newArray,0,Math.min(a.length,newLength));
return newArray;
}
public static Object goodCopyOf(Object a,int newLength){
Class c1 = a.getClass();
if (!c1.isArray()) return null;//首先确定是一个数组
Class componentType = c1.getComponentType();//使用Class类的getComponentType()方法确定数组类型
int length = Array.getLength(a);
Object newArray = Array.newInstance(componentType,newLength);
System.out.println(length);
System.out.println(newLength);
System.arraycopy(a,0,newArray,0,Math.min(length,newLength));
return newArray;
}
}其中我调用那个goodCopyOf()方法,使用一个Math.min()方法,按道理应该返回数值小的那个(即原本数组的长度6),为什么最后还是出现新数组长度为10?(话说不清楚,运行结果如下:)

...全文
相关推荐
System.arraycopy实现数组之间的复制
System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。
System.arraycopy和Arrays.copyOf
个人研究所得,包含对其内部jdk源码的分析。 同时会结合ArrayList中对该两个方法的调用做进一步说明。 总结一句话:在允许的情况下,尽量调用System.arraycopy方法,实在不行再调用Arrays.copyOf方法。
Java实现把两个数组合并为一个的方法总结
主要介绍了Java实现把两个数组合并为一个的方法,结合实例形式总结分析了java常用的四种数组合并操作技巧,需要的朋友可以参考下
Java System类两个常用方法代码实例
主要介绍了Java System类两个常用方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
java 数组的合并
java 数组的合并 java 数组的合并 java 数组的合并


Java SE
