Java中数组复制的几种方法
2016-07-14 18:32
447 查看
/** * @author zhengbinMac */ public class Test { public static void main(String[] args) { int[] array1 = {1,2,3,4,5}; // 1.通过for循环 int[] array2 = new int[5]; for(int i = 0;i < array1.length;i++) { array2[i] = array1[i]; } for(int i = 0;i < array2.length;i++) { System.out.print(array2[i]); } System.out.println(); //2.通过System.arraycopy() int[] array3 = new int[5]; System.arraycopy(array1, 0, array3, 0, 5); for (int i = 0; i < array3.length; i++) { System.out.print(array3[i]); } System.out.println(); //3.通过Arrays.copyOf() int[] array4 = new int[5]; array4 = Arrays.copyOf(array1, 5); for (int i = 0; i < array4.length; i++) { System.out.print(array4[i]); } System.out.println(); //4.通过Object.clone() int[] array5 = new int[5]; array5 = array4.clone(); for (int i = 0; i < array5.length; i++) { System.out.print(array5[i]); } } }
1.for循环方法:
代码灵活,但效率低。2.System.arraycopy()方法:
通过源码可以看到,其为native方法,即原生态方法。自然效率更高。public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
3.Arrays.copyOf()方法:
同样看源码,它的实现还是基于System.arraycopy(),所以效率自然低于System.arraycpoy()。1 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; }
4.Object.clone()方法:
从源码来看同样也是native方法,但返回为Object类型,所以赋值时将发生强转,所以效率不如之前两种。protected native Object clone() throws CloneNotSupportedException;
相关文章推荐
- 全面解析Java注解
- Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别
- Eclipse中设置XML文件的自动格式化配
- Java IO最详解
- Eclipse之SVN插件离线安装(Mars.2 Release (4.5.2))
- Eclipse常用设置
- java加载机制整理
- Java解析XML的方法总结
- 【JavaWeb开发】Maven的安装配置方法(eclipse)
- 双缓冲消除闪烁在重量级Frame和轻量级组件Jframe中的区别
- Java并发包:ScheduledExecutorService
- HBase内置过滤器
- Java IO的简易学生管理系统
- spring事务管理几种方式(转)
- 基于注解的Spring MVC
- spring quartz定时任务 配置
- Spring Boot - 初探
- Java正则表达式的语法与示例
- Java(1):运行多态性
- JAVA两种枚举类型遍历