这几天看了一下有关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();
        }
    }
}

第一种的输出格式,转化成字符串形式输出

第二种输出格式为:

posted on 2012-06-02 18:45  Stephen Li  阅读(285)  评论(0编辑  收藏  举报