java数组复制三种方法详解
程序员文章站
2022-04-15 19:06:05
源数组如下创建新数组,并赋值int a[] = new int[20];for (int i = 0; i < a.length; i++) { a[i] = i + 15; }三种方法如下int b[] = Arrays.copyOfRange(a, 0, 20);int c[] = Arrays.copyOf(a, 10);int d[] = new int[30]; System.arraycopy(a, 10, d, 5, 1....
源数组如下
创建新数组,并赋值
int a[] = new int[20];
for (int i = 0; i < a.length; i++) {
a[i] = i + 15;
}
三种方法如下
int b[] = Arrays.copyOfRange(a, 0, 20);
int c[] = Arrays.copyOf(a, 10);
int d[] = new int[30];
System.arraycopy(a, 10, d, 5, 10);
整个代码如下
每个方法的详细使用及参数意义在注释中
package arrayCopy;
import java.util.Arrays;
public class Copys {
public static void main(String[] args) {
int a[] = new int[20];
for (int i = 0; i < a.length; i++) {
a[i] = i + 15;
}
int b[] = Arrays.copyOfRange(a, 0, 20);
int c[] = Arrays.copyOf(a, 10);
int d[] = new int[30];
System.arraycopy(a, 10, d, 5, 10);
System.out.print("源数组: ");
for (int i : a) {
System.out.print(i + " ");
}
System.out.println();
System.out.println();
System.out.println("Arrays.copyOfRange(a, 2, 10)结果: ");
for (int t : b) {
System.out.print(t + " ");
}
/*
该方法作用是把a数组从0开始复制,复制到哪里
参数意义(原数组,源数组开始复制位置,源数组截止位置+1)
如果要复制整个数组,则参数为(a,0,20)
新数组长度可以比原数组长,如(a,2,30), 结果就是
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 0 0 0 0 0 0 0 0 0 0
*/
System.out.println();
System.out.println();
System.out.println("Arrays.copyOf(a, 10)结果:");
for (int t : c) {
System.out.print(t + " ");
}
/*
该方法作用是简单复制数组,从源数组的下标0开始,复制10个数
参数意义(源数组,从0开始到截止位置+1)
如果复制整个数组,则参数为Arrays.copyOf(a, 10),结果就是
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
和Arrays.copyOfRange一样,也可以用作扩容,新数组可以比原数组大,比如Arrays.copyOfRange(a, 2, 30)结果如下
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 0 0 0 0 0 0 0 0 0 0
*/
System.out.println();
System.out.println();
System.out.println("System.arraycopy(a, 10, d, 5, 3)结果:");
for (int t : d) {
System.out.print(t + " ");
}
/*
该方法作用是把源数组a从第10个数开始,复制到新数组第5个位置,总共复制3个数
参数意义(源数组,源数组开始下标,新数组,新数组开始下标,原数组截止下标+1)
如复制5个数为参数设置为System.arraycopy(a, 10, d, 5, 5)
0 0 0 0 0 25 26 27 28 29 0 0 0 0 0
最后一个参数不能超过源数组长度,如当前源数组长度为20,从第10个开始复制,则该参数最大只能是10,否则会有溢出报错
*/
System.out.println();
}
}
结果截图如下
本文地址:https://blog.csdn.net/qq_35697978/article/details/107686221