/**
* @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中数组复制的几种方法的更多相关文章

  1. java中数组复制的两种方式

    在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...

  2. Java中数组复制的几种方式以及数组合并

    1.Object.clone() 简单直接,只能对源数组完整地复制 2.Arrays.copyOf(T[] original, int newLength) 可以只复制源数组中部分元素,但复制的起始位 ...

  3. js中数组去重的几种方法

    js中数组去重的几种方法         1.遍历数组,一一比较,比较到相同的就删除后面的                 function unique(arr){                 ...

  4. JavaScript中数组去重的几种方法

    JavaScript中数组去重的几种方法 正常情况下,数据去重的工作一般都是由后端同事来完成的,但是前端也要掌握好处理数据的能力,万一去重的工作交给我们大前端处理,我们也不能怂呀.现在我总结了一些去重 ...

  5. Java中遍历map的四种方法 - 转载

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  6. Java 中 List 分片的 5 种方法!

    前些天在实现 MyBatis 批量插入时遇到了一个问题,当批量插入的数据量比较大时,会导致程序执行报错,如下图所示: 原因是 MySQL 只能执行一定长度的 SQL 语句,但当插入的数据量较多时,会生 ...

  7. 谈谈java中遍历Map的几种方法

    java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点 先初始化一个map public ...

  8. 干货 | Java中获取类名的3种方法!

    获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里面的class的类名表现形式. getCanonicalName() 返回的是更容易理解的类名表示. g ...

  9. javascript中数组去重的4种方法

    面试前端必须准备的一道问题:怎样去掉Javascript的Array的重复项.在最近面试中,百度.腾讯.盛大等都在面试里出过这个题目.这个问题看起来简单,但其实暗藏杀机. 考的不仅仅是实现这个功能,更 ...

随机推荐

  1. POJ 2007 Scrambled Polygon (简单极角排序)

    题目链接 题意 : 对输入的点极角排序 思路 : 极角排序方法 #include <iostream> #include <cmath> #include <stdio. ...

  2. http://www.cnblogs.com/yjmyzz/p/dubbox-demo.html

    http://www.cnblogs.com/yjmyzz/p/dubbox-demo.html

  3. 一些时间的概念与区分(UTC、GMT、LT、TAI等)

    UT - 世界时 Universal Time世界时是最早的时间标准.在1884年,国际上将1s确定为全年内每日平均长度的1/8.64×104.以此标准形成的时间系统,称为世界时,即 UT1.1972 ...

  4. tomcat console

    1.大家都知道,在Tomcat5及其以后的版本中,当启动tomcat之后,是看不到控制台中的manager应用的.Manager的应用还是很有好处的,可以直接在控制台上(类似于weblogic上的co ...

  5. SQLHelper.cs的经典代码-存储过程

    using System; using System.Collections.Generic; using System.Text; using System.Collections; using S ...

  6. android 点九PNG技术 适应不同分辨率 完美显示效果

    .9.png是一种非失真性压缩位图图形文件格式.PNG格式是非失真性压缩的,允许使用类似于GIF格式的调色板技术,支持真彩色图像,并具备阿尔法通道(半透明)等特性.现在有很多人使用PNG格式于互联网及 ...

  7. JavaWeb笔记——Jsp的指令、内置对象和动作标签

    JSP三大指令   一个jsp页面中,可以有0~N个指令的定义! 1. page --> 最复杂:<%@page language="java" info=" ...

  8. 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder

    [重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder   1.String String是Java中的一个final ...

  9. POJ3176——Cow Bowling(动态规划)

    Cow Bowling DescriptionThe cows don't use actual bowling balls when they go bowling. They each take ...

  10. shell中的大括号和小括号

      1.shell中的大括号和小括号   1.${var} 2.$(cmd) 3.() 和 {} 4.${var:-string}, ${var:+string},  ${var:=string}, ...