欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Java】--几种简单方法实现数组拷贝

程序员文章站 2024-02-26 18:19:28
...

 参考链接:https://blog.csdn.net/u011669700/article/details/79323251

最简单的办法直接一个for循环走完拷贝一遍:

import java.util.Arrays;
public class copy_arr_use_for {

	public static void main(String[] args) {
		
		int[] arr = {11,22,33,44,55,66,77,88,99};
		int[] new_arr = new int[arr.length];
		
		for (int i=0; i < arr.length; i++) {
			new_arr[i] = arr[i];
		}
		
		
		System.out.println("arr: " + Arrays.toString(arr));
		System.out.println("new_arr: " + Arrays.toString(new_arr));
	}
}

【Java】--几种简单方法实现数组拷贝

 

 

除此之外还可以直接调用函数,这样比较方便简洁。

以下方法经如下链接中的方法所实现,参考链接:https://blog.csdn.net/u011669700/article/details/79323251

/*
本文引用的四种拷贝数组的方法:clone()、System.arraycopy()、Arrays.copyOf()、Arrays.copyOfRange()
*
*/


import java.util.Arrays;

public class copy_arrays {
	
	public static void main(String[] args) {
		
		
		//①clone()方法拷贝数组
		int a1[] = {1, 3};
		
		//a2在a1未改变之前就将其拷贝
		int a2[] = a1.clone();
        //此函数只起到输出作用
		clone_arr(a1, a2);
		
		
		System.out.println("数组a1: " + Arrays.toString(a1));
		//数组a1也会改变,因为在void函数clone_arr()中, 数组a指向a1,所以改变a[0],a1[0]也会随之改变
		System.out.println();
		
		String[] s1 = {"aa", "bb"};
		//clone()方法拷贝数组,a2在a1未改变之前就将其拷贝
		String[] s2 = s1.clone();
		//此函数只起到输出作用
        clone_arr(s1, s2);
		System.out.println();
		
		
		//②System.arraycopy()方法拷贝数组,具体用法在该函数体内
		System_arraycopy();
		System.out.println();
		
		//③Arrays.copyOf方法拷贝数组,具体用法在该函数体内
		//Arrays.copyOf底层也是用的System.arraycopy
		Arrays_copyOf();
		System.out.println();
		
		//④Arrays.copyOfRange()方法
		//Arrays.copyOfRange底层其实也是用的System.arraycopy,只不过封装了一个方法
		Arrays_copyOfRange();
		
		
		
	}
	
	
	
	//①clone()方法拷贝int型数组
	public static void clone_arr(int[] a, int[] b) {
		
		a[0] =666;//改变a[0]的值
		
		System.out.println("数组a: " + Arrays.toString(a));
		//[666, 3]
		System.out.println("经过clone()方法拷贝的数组b: " + Arrays.toString(b));
		//[1, 3]	
	}
	
	//使用多态,并且使用clone()方法拷贝String数组
	public static void clone_arr(String[] a, String[] b) {
		
		a[0] = "sss";
		
		System.out.println("数组a: " + Arrays.toString(a));
		System.out.println("经过clone()方法拷贝的数组b: " + Arrays.toString(b));
	}
	
	
	
	//②使用System.arraycopy()方法拷贝数组
	public static void System_arraycopy() {
		
		int[] a1 = {1,2,3,4,5};
		int[] a2 = new int[a1.length];
		
		
		//使用方法:(原数组, 原数组开始位置, 目标数组, 目标数组开始位置)
		System.arraycopy(a1, 0, a2, 0, a1.length);
		System.out.println("数组a1: " + Arrays.toString(a1));
		System.out.println("经过System.arraycopy()方法拷贝的数组a2: " + Arrays.toString(a2));
		
	}
	
	
	
	//③使用Arrays.CopyOf()方法拷贝数组:
	public static void Arrays_copyOf() {
		
		int[] a1 = {1,2,3,4,5};
		
		//使用方法:(原数组,拷贝的个数),使用该方法时无需使用new关键字对对象进行内存分配
		int[] a2 = Arrays.copyOf(a1, 3);
		int[] a3 = Arrays.copyOf(a1, 5);
		
		System.out.println("数组a1: " + Arrays.toString(a1));
		System.out.println("经过Arrays.copyOf()方法拷贝的数组a2:" + Arrays.toString(a2));
		System.out.println("经过Arrays.copyOf()方法拷贝的数组a3:" + Arrays.toString(a3));
		
	}
	
	
	
	//④使用Arrays.copyOfRange()方法拷贝数组:
	public static void Arrays_copyOfRange() {
		
		int[] a1 = {1,2,3,4,5,6};
		
		//使用方法:(原数组,开始位置,拷贝的个数),使用该方法时无需使用new关键字对对象进行内存分配
		int[] a2 = Arrays.copyOfRange(a1, 0, 3);
		
		System.out.println("数组a1: " + Arrays.toString(a1));
		System.out.println("经过Arrays.copyOfRange()方法拷贝的数组a2: " + Arrays.toString(a2));
		
	}
	
}
		
	
	


【Java】--几种简单方法实现数组拷贝

相关标签: java 数组拷贝