这几天看了一下有关JAVA的数组部分,下面就写几个有关数组的代码利于掌握;
㈠复制数组;
利用的是System.arraycopy(src, srcPos, dest, destPos, length);
其中五个参数的意义代表 src--被复制数组,srcpos---从第几个元素开始复制,dest---要复制的数组,destpos---从第几个元素开始存储,length----一共需要复制的数组个数;
实现的功能就是把a数组中得内容从a[0]复制到b数组中,b数组从b[2]开始接收a数组的内容,接收数目为3个,所以b[2]到b[5]就存储a数组的a[0]--a[3]的内容
代码如下:
package Practise; public class ArrayCopy { public static void main(String[] args){ String[] a = {"liao", "cheng", "shi", "dou"}; String[] b = new String[a.length + 1];//数组b的初始化,申请的长度比a大一 System.arraycopy(a, 0, b, 2, 3);//从a的第一个元素开始复制,b从第二个元素开始接收三个元素 for (int i = 0; i < b.length; i++){ System.out.println(b[i]); } } }
运行结果如下:
㈡引用Copy
代码如下:
package Practice; public class ReferenceCopyArray{ public static void main(String[] args){ int [] a = {2, 4, 6, 8, 10};////定义一个数组 int [] b = a;////将a赋值给b a[0] = 1; a[1] = 3; a[2] = 5; a[3] = 7; a[4] = 9; for (int i = 0; i < b.length; i++){ System.out.print(b[i] + " "); } } }
运行结果:
1 3 5 7 9
解释:有的人说为什么不是输出的是2, 4, 6, 8, 10;因为这是引用复制,对a的操作其实就是对b的操作,a改变即b改变;相当于C++中得引用&;
㈢不规则数组的测试
代码如下:
package Practice; import java.util.Arrays; public class RaggedArray { public static void main(String[] arg){ int [][] raggedArray = new int[10][];//新建一个不规则数组,一维数组元素个数为10 for (int i = 0; i <raggedArray.length; i++){//在第一维上进行遍历 raggedArray[i] = new int[i + 1];//初始化二维数组(长度是变化的) for (int j = 0; j < raggedArray[i].length; j++){ raggedArray[i][j] = j;//为二维数组每一个元素赋值 } } /* * 第一种输出格式,转化成字符串输出 for (int i = 0; i < raggedArray.length; i++){ String arrayStr = Arrays.toString(raggedArray[i]);//将二维数组的每一个元素转化成字符串 System.out.println(arrayStr); }*/ //第二种输出格式,正常的输出 for (int i = 0; i < raggedArray.length; i++){ for (int j = 0; j < raggedArray[i].length; j++){ System.out.print(raggedArray[i][j] + " "); } System.out.println(); } } }
第一种的输出格式,转化成字符串形式输出
第二种输出格式为: