java中数组如何复制

  介绍

小编给大家分享一下java中数组如何复制,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

<强>在java里面复制数组有几种方式:

(1)克隆

(2) System.arraycopy

(3) Arrays.copyOf

(4) Arrays.copyOfRange

<强>下面分别介绍下他们的用法:

(1)克隆方法是从对象类继承过来的,基本数据类型(字符串、布尔值、char,字节,短,浮动,翻倍。长)都可以直接使用克隆方法进行克隆,注意字符串类型是因为其值不可变所以才可以使用。

a1 int []={1,3};   int []=a1.clone a2 ();   a1 [0]=666;   System.out.println (Arrays.toString (a1));//(666 3)   System.out.println (Arrays.toString (a2));//[1,3]

2)系统。arraycopy方法是一个本地的方法,源码里定义如下:

/* *   * System.arraycopy (src, srcPos,桌子,destPos长度);   * src:源数组srcPos:源数组要复制的起始位置;   *桌子:目的数组destPos:目的数组放置的起始位置;   *长度:复制的长度。   */公共静态原生空隙arraycopy(对象src、int srcPos   对象dest, int destPos,   int长度);

<强>用法示例:

a1 int []={1, 2, 3, 4, 5};   a2 int []=new int [10];   System.arraycopy (a1, a2、3、3);   System.out.println (Arrays.toString (a1));//[1、2、3、4、5)   System.out.println (Arrays.toString (a2));//(0, 0, 0, 2、3、4, 0, 0, 0, 0)

<强>注意:这个方法,需要我们自己新一个新的数组

(3) Arrays.copyOf底层其实也是用的系统。arraycopy源码如下:

公共静态& lt; T,标签;T [] copyOf (U[]原始,int newLength Class<?extends T[]比;newType) {   @SuppressWarnings (“unchecked")   T[]复制=((对象)newType==(对象)对象[]. class)   ? (T[])新对象(newLength)   :(T []) Array.newInstance (newType.getComponentType (), newLength);   系统。arraycopy(原始,0,复制,0,   Math.min(原始。长度、newLength));   返回副本;   }

<>强用法示例:

a1 int []={1, 2, 3, 4, 5};   int []=Arrays.copyOf a2 (a1, 3);//(原数组,拷贝的个数)   System.out.println (Arrays.toString (a1));//[1、2、3、4、5)   System.out.println (Arrays.toString (a2));//(1、2、3)//这个方法不需要我们新的新的数组

(4) Arrays.copyOfRange底层其实也是用的系统。arraycopy,只不过封装了一个方法

a1 int []={1, 2, 3, 4, 5};   int []=Arrays.copyOfRange a2 (a1, 0,1);//(原数组,开始位置,拷贝的个数)   System.out.println (Arrays.toString (a1));//[1、2、3、4、5)   System.out.println (Arrays.toString (a2));//[1]

最后需要注意的是基本类型的拷贝是不影响原数组的值的,如果是引用类型,就不能这用了,因为数组的拷贝(复制)是浅拷贝。

以上是java中数组如何复制的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

java中数组如何复制