Java-Java中System.arraycopy() 和 Arrays.copyOf()两者之间的区别
如果我们想拷贝一个数组,我们可能会使用System.arraycopy()或者Arrays.copyof()两种方式。在这里,我们将使用一个比较简单的示例来阐述两者之间的区别。
1、示例代码:
System.arraycopy()
int[] arr = {,,,,};
int[] copied = new int[];
System.arraycopy(arr, , copied, , );//5 is the length to copy
System.out.println(Arrays.toString(copied));
运行结果:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 2, 3, 4, 5, 0, 0, 0, 0]
Arrays.copyof()
int[] copied = Arrays.copyOf(arr, 10); //10 the the length of the new array
System.out.println(Arrays.toString(copied)); copied = Arrays.copyOf(arr, 3);
System.out.println(Arrays.toString(copied));
运行结果:
[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
[1, 2, 3]
2、两者间的主要区别
两者的区别在于,Arrays.copyOf()不仅仅只是拷贝数组中的元素,在拷贝元素时,会创建一个新的数组对象。而System.arrayCopy只拷贝已经存在数组元素。
如果我们看过Arrays.copyOf()的源码就会知道,该方法的底层还是调用了System.arrayCopyOf()方法。
public static int[] copyOf(int[] original, int newLength) {
   int[] copy = new int[newLength];
   System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));
   return copy;
}
Java-Java中System.arraycopy() 和 Arrays.copyOf()两者之间的区别的更多相关文章
- Java中 System.arraycopy() 和 Arrays.copyOf()方法
		System.arraycopy() 和 Arrays.copyOf()方法 阅读源码的话,我们就会发现 ArrayList 中大量调用了这两个方法.比如:我们上面讲的扩容操作以及add(int in ... 
- 论java中System.arrayCopy()与Arrays.copyOf()的区别
		如果我们想拷贝一个数组,我们可能会使用System.arraycopy()或者Arrays.copyof()两种方式.在这里,我们将使用一个比较简单的示例来阐述两者之间的区别. 首先先说System. ... 
- java数组的拷贝四种方法:for、clone、System.arraycopy、arrays.copyof
		public class ArrayCopy{ public static void main(String []args){ int []a = {1,3,4,5}; toPrint(a); int ... 
- JAVA System.arraycopy 和Arrays.copyof 效率比较
		System.arraycopy()源码.可以看到是native方法: native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中. ... 
- System.arraycopy 和 Arrays.copyOf
		System.arraycopy /* native关键字 本地方法 System类 java.lang.System.class 参数说明: src - 源数组. srcPos - 源数组中的起始位 ... 
- System.arraycopy()和Arrays.copyOf()的区别
		先看看System.arraycopy()的声明: public static native void arraycopy(Object src,int srcPos, Object dest, in ... 
- System.arraycopy和arrays.copyOf
		public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length); 这 ... 
- 再谈System.arraycopy和Arrays.copyOf
		之前转载过一篇博文,介绍过这两个方法,今天想要再次详细的了解一下. public static native void arraycopy(Object src, int srcPos, Object ... 
- 【Java基础】System.arraycopy()的使用详解
		由于在Java中System.arraycopy()方法在一维数组和二维数组中的表现不同,所以做了一个测试 public static void main(String[] args) { int[] ... 
随机推荐
- 又折腾到这么晚 , 图片Viewpager PagerIndicator,listview 和侧边栏滑动的事件处理
			代码 思路 根据坐标判断 事件是否拦截 调用 getParent().requestDisallowInterceptTouchEvent(true);方法告诉上层ViewGroup 是否拦截 返回t ... 
- [CareerCup] 6.1 Find Heavy Bottle 寻找重瓶子
			6.1 You have 20 bottles of pills. 19 bottles have 1.0 gram pills, but one has pills of weight 1.1 gr ... 
- 20145222黄亚奇《Java程序设计》实验五实验报告
			20145222 <Java程序设计>实验五实验报告 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 本次实验我的结对编程对象是20 ... 
- grootJs 属性过滤器
			index10.html <html><head> <title>属性过滤器</title> <script src="jquery-1 ... 
- Spring学习(三)——Spring中的依赖注入的方式
			[前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring.不知 ... 
- Bootstrap系列 -- 17. 复选框checkbox和单选择按钮radio
			Bootstrap框架中checkbox和radio有点特殊,Bootstrap针对他们做了一些特殊化处理,主要是checkbox和radio与label标签配合使用会出现一些小问题(最头痛的是对齐问 ... 
- Javascript基础系列之(五)条件语句(switch语句)
			stwith语句的格式一般如下: switch (expression){ case value :statement1 break; case value2 :statement2 break; . ... 
- PHP乱码问题,UTF-8(乱码)
			一.HTML页面转UTF-8编码问题 1.在head后,title前加入一行: <meta http-equiv='Content-Type' content='text/html; chars ... 
- ios------进度轮
			UIActivityIndicatorView实例提供轻型视图,这些视图显示一个标准的旋转进度轮.当使用这些视图时,最重要的一个关键词是小.20×20像素是大多数指示器样式获得最清楚显示效果的大小.只 ... 
- All thanks
			How to make a salad?——Silun Wang 这是一次成功的团队合作,我为所有组员感到骄傲和自豪!感谢你们! 上个学期期末,和@老钱他们一起去五道口吃Pizza,谈到了大三上学期的 ... 
