介绍
小编给大家分享一下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中数组如何复制的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!