System.arraycopy和Arrays.copyOfRange的区别,数组复制,按下标复制,二维数组输出

要把一个二维数组整体所有元素进行排序,应使用System.arraycopy(src, srcPos, dest, destPos, length)方法,此方法可以调整复制到一维数组的位置,然后使用Arrays.sort进行排序。

而Arrays.copyOfRange(int[] original, int from, int to)方法不能在一维数组进行确定位置复制,也就是说,二维数组无法全部复制到一维数组(只能复制一行),只能在循环内部先对一行进行复制,排序,由此复制得到的二维数组是每一行进行了排序,而不是整体所有元素进行了排序。

System.arraycopy(src, srcPos, dest, destPos, length)

public class HelloWorld {
	public static void main(String[] args) {
        int a [] = new int[]{18,62,68,82,65,9};
        
        int b[] = new int[3];//分配了长度是3的空间,但是没有赋值
        
        //通过数组赋值把,a数组的前3位赋值到b数组
        
        //方法一: for循环
        
        for (int i = 0; i < b.length; i++) {
			b[i] = a[i];
		}
       
        //方法二: System.arraycopy(src, srcPos, dest, destPos, length)
        //src: 源数组
        //srcPos: 从源数组复制数据的起始位置
        //dest: 目标数组
        //destPos: 复制到目标数组的启始位置
        //length: 复制的长度        
        System.arraycopy(a, 0, b, 0, 3);
        
        //把内容打印出来
        for (int i = 0; i < b.length; i++) {
            System.out.print(b[i] + " ");
        }

    }
}

Arrays.copyOfRange(int[] original, int from, int to)

import java.util.Arrays;

public class HelloWorld {
	public static void main(String[] args) {
		int a[] = new int[] { 18, 62, 68};

		// copyOfRange(int[] original, int from, int to)
		// 第一个参数表示源数组
		// 第二个参数表示源数组开始位置(取得到)
		// 第三个参数表示源数组结束位置(取不到)
		int[] b = Arrays.copyOfRange(a, 0, 3);

		for (int i = 0; i < b.length; i++) {
			System.out.print(b[i] + " ");
		}

	}
}
//数组复制,不使用复制方法,找下标匹配
public void arrayTestTwo(){
    int[][] a = new int[5][8];
    int[] b = new int[a.length * a[0].length];
    for (int i = 0; i 

例:

二维数组a[5][8]

a.length=5

a[0].length=8

a[1].length=8

二维数组里面的一维数组a[i]的下标只有0-7,没有8-16

二维数组输出:

//1. 
int[][] a = new int[5][5];
 for (int[] b:a
             ) {
            for (int c:b
                 ) {
                System.out.print(c+"  ");
            }
            System.out.println();
        }

//2.
int[][] a = new int[5][8];
    for (int i = 0; i 

 

你可能感兴趣的:(Java基础)