翻看印象笔记发现自己整理过arraycopy()这样一个方法,码字放到这里:
System.arraycopy()是一个静态方法,用来实现重置数组操作
数组复制方法调用和参数列表:
System.arraycopy(src, srcPos, dest, destPos, length);
src:原数组
srcPos:原数组的开始位置
dest:目标数组
destPos:目的数组的开始位置
length:复制长度
数组复制代码示例:
1
2
3
4
|
//originalArray 数组全部复制到targetArray数组
int [] originalArray = new int [ 10 ];
int [] targetArray = new int [ 10 ];
System.arraycopy(originalArray, 0 , targetArray, 0 , originalArray.length);
|
通过入参的长度 限制是全部复制还是部分复制
重置数组大小代码示例:
1
2
3
4
5
|
int [] originalArray = new int [ 10 ];
int [] temp = new int [originalArray.length + 10 ];
System.arraycopy(originalArray, 0 , temp, 0 , originalArray.length);
//数组重新复制
originalArray=temp;
|
以后建议在重置数组或者数组复制时用这个静态方法,效率要比for循环高(来自某本技术书籍)
补充知识:java:复制数组(指定范围内复制)
相关说明
int newArray0[]=copyOf(这里放被复制的数组,这里放要复制的长度);
当复制长度大于被复制的数组长度时,超出部分int类型用0代替,char类型用null代替。
当复制长度小于被复制的数组长度时,只取开头到指定长度位置的部分。
int newArray1[]=copyOfRange(a,b,c);
range(范围)
a:被复制的数组
b:复制的起始位置(元素被包括)
c:复制的终止位置(元素不被包括)
源码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import java.util.Arrays;
class Demo{
public static void main(String[] args){
int array0[]={ 32 , 82 , 99 }; //被复制的数组一
System.out.println( "被复制的数组为:32,82,99 \n 复制长度为7的数组为:" );
int newArray0[]=Arrays.copyOf(array0, 7 ); //复制成长度为7的数组
for ( int n= 0 ;n<newArray0.length;n++){
System.out.print( "[" +newArray0[n]+ "]" );
}
System.out.println(); //换行
int array1[]={ 82 , 16 , 33 , 11 , 92 , 01 , 34 };
System.out.println( "被复制的数组为:82,16,33,11,92,01,34 \n 复制从1位置到4位置的数组:" );
int newArray1[]=Arrays.copyOfRange(array1, 1 , 4 ); //从1位置复制到4位置
for ( int m= 0 ;m<newArray1.length;m++){
System.out.print( "[" +newArray1[m]+ "]" );
}
System.out.println(); //换行
}
}
|
运行结果
以上这篇JAVA复制数组和重置数组大小操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/wjsshhx/article/details/62041120