Java中数组复制的几种方法

 1 /**
 2  * @author zhengbinMac
 3  */
 4 public class Test {
 5     public static void main(String[] args) {
 6         int[] array1 = {1,2,3,4,5};
 7         // 1.通过for循环
 8         int[] array2 = new int[5];
 9         for(int i = 0;i < array1.length;i++) {
10             array2[i] = array1[i];
11         }
12         for(int i = 0;i < array2.length;i++) {
13             System.out.print(array2[i]);
14         }
15         System.out.println();
16         //2.通过System.arraycopy()
17         int[] array3 = new int[5];
18         System.arraycopy(array1, 0, array3, 0, 5);
19         for (int i = 0; i < array3.length; i++) {
20             System.out.print(array3[i]);
21         }
22         System.out.println();
23         //3.通过Arrays.copyOf()
24         int[] array4 = new int[5];
25         array4 = Arrays.copyOf(array1, 5);
26         for (int i = 0; i < array4.length; i++) {
27             System.out.print(array4[i]);
28         }
29         System.out.println();
30         //4.通过Object.clone()
31         int[] array5 = new int[5];
32         array5 = array4.clone();
33         for (int i = 0; i < array5.length; i++) {
34             System.out.print(array5[i]);
35         }
36     }
37 }

1.for循环方法:

  代码灵活,但效率低。

2.System.arraycopy()方法:

  通过源码可以看到,其为native方法,即原生态方法。自然效率更高。

1 public static native void arraycopy(Object src,  int  srcPos,
2                                         Object dest, int destPos,
3                                         int length);

3.Arrays.copyOf()方法:

  同样看源码,它的实现还是基于System.arraycopy(),所以效率自然低于System.arraycpoy()。

1 public static int[] copyOf(int[] original, int newLength) {
2   int[] copy = new int[newLength];
3   System.arraycopy(original, 0, copy, 0,
4     Math.min(original.length, newLength));
5   return copy;
6 }

4.Object.clone()方法:

  从源码来看同样也是native方法,但返回为Object类型,所以赋值时将发生强转,所以效率不如之前两种。

1 protected native Object clone() throws CloneNotSupportedException;
时间: 2024-10-18 19:33:36

Java中数组复制的几种方法的相关文章

js中数组去重的几种方法

js中数组去重的几种方法         1.遍历数组,一一比较,比较到相同的就删除后面的                 function unique(arr){                         for(var i=0;i<arr.length;i++){                                 for(var j=i+1;j<arr.length;j++){                                         if(ar

java中遍历MAP的几种方法

java中遍历MAP的几种方法 Java代码 Map<String,String> map=new HashMap<String,String>();    map.put("username", "qq");    map.put("passWord", "123");    map.put("userID", "1");    map.put("em

PHP中数组遍历常用几种方法

在编码的过程中,对指定的数组进行遍历是再常见不过的事了.在遍历的过程中,很多的语言都是利用for循环进行遍历,方便快捷.但是PHP中,对于数组的下标与有些语言不同.PHP中数组的下标可以为字符串,也可以字符串和数字混合,也就是所谓的关联数组.如果下标是纯数字的话,那就是索引数组了. 1.for() for()进行遍历时,有个局限,如果是关联数组的话,就不能根据下标的递增来遍历了,突然冒出了字符串的话,肯定会报错.所以在PHP中,for()能使用的范围也就是索引数组了. <?php     $ar

【Java】数组操作的13种方法

内容来自StackoverFlow.可能对一些大神来讲太简单,但是这里好多用法我真的第一次用,学习了. 0.定义一个数组 String[] aArray = new String[5]; String[] bArray = {"a", "b", "c", "d", "e"}; String[] cArray = new String{"a", "b", "c

Java中获取类名的3种方法!

获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里面的class的类名表现形式. getCanonicalName() 返回的是更容易理解的类名表示. getSimpleName() 返回的是类的简称. 都有什么区别? 通过一个实例来看下它们主要的区别. public class TestClass { public static void main(String[] args) { // 外部普通类 System.out.println("方法名

PHP中数组合并的两种方法及区别介绍

PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码代码如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = array( 'where' => 'uid=2', 'order' => 'uid desc', ); 1. array_merge,如果两个数组存在相同的key,后面的一个会覆盖前面的 复制代码代码如下: <?php $c = array_merge($a, $b); var_expo

javascript中数组去重的4种方法

面试前端必须准备的一道问题:怎样去掉Javascript的Array的重复项.在最近面试中,百度.腾讯.盛大等都在面试里出过这个题目.这个问题看起来简单,但其实暗藏杀机. 考的不仅仅是实现这个功能,更能看出你对计算机程序执行的深入理解. 我总共想出了三种算法来实现这个目的: 方法一: Array.prototype.unique1 = function() {     var n = []; //一个新的临时数组     for(var i = 0; i < this.length; i++)

Java中读取Map的两种方法对比

引言: 在Java中Map的使用非常频繁,我们经常会需要对Map进行遍历和读取,下面将展示两种遍历的方法以及简要分析. 1.  遍历Map方法A Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val =

Java中数组常见的几种排序方法!

数组的定义: int[] arr = new int[5]; int[] arr1 = {1,2,3,4,5}; long[] arr2 = new long[6]; String[] strs = new String[5]; Person[] ps = new Person[5]; 数组的操作: int[] arr = {45, 34, 53, 43}; Arrays.sort(arr); System.out.println(Arrays.toString(arr)); // 二分搜索法(