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

Java中一维数组的扩容与拷贝

程序员文章站 2022-04-10 09:56:10
关于一维数组的扩容:在java开发中,数组长度一旦确定,不可改变。那么数组满了怎么办?数组满了,需要扩容。java中对数组的扩容是:先建立一个大容量的数组,然后将小容量数组中的数据一个一个拷贝到大数组当中。拷贝的方法:System.arraycopy(src, srcPos, dest, destPos, len);src:待拷贝的源数组srcPos:待拷贝数组的开始拷贝下标dest:拷贝到的目标数组destPos:目标数组的开始接收下标len:需要拷贝元素的个数测试代码:publi...

关于一维数组的扩容:
在java开发中,数组长度一旦确定,不可改变。
那么数组满了怎么办?数组满了,需要扩容。

java中对数组的扩容是:
先建立一个大容量的数组,然后将小容量数组中的数据一个一个拷贝到大数组当中。

拷贝的方法:

System.arraycopy(Object src, int srcPos, Object dest, int destPos, int len);

src:待拷贝的源数组
srcPos:待拷贝数组的开始拷贝下标
dest:拷贝到的目标数组
destPos:目标数组的开始接收下标
len:需要拷贝元素的个数

测试代码:

public class ArrayTest05 {

    public static void main(String[] args) {
        //静态实例化待拷贝的数组,3个元素
        Person[] srcPer = {new Person(1002,"李四"),
                new Person(1003,"王五"),
                new Person(1004,"赵六")};

        //动态实例化一个较大的数组,来接受数据
        Person[] destPer = new Person[5];
        //假设目标数组中已经存储了一个Person张三
        destPer[0] = new Person(1001,"张三");

        //拷贝之前,先输出两个数组的信息:每个对象的数据 + 哈希处理的对象内存地址
        System.out.println(destPer[0].id + "," + destPer[0].name + "   地址:" + destPer[0].hashCode());
        for (int i = 0; i < srcPer.length; i++) {
            System.out.println(srcPer[i].id + "," + srcPer[i].name + "   地址:" + srcPer[i].hashCode());
        }
        System.out.println("----------------------------------------------------------------------");

        //开始拷贝,将srcPer全部拷贝到destPer当中
        System.arraycopy(srcPer, 0, destPer, 1, srcPer.length);

        //遍历目标数组,检测是否拷贝成功
        for (int i = 0; i < destPer.length; i++) {
            if (destPer[i] != null)
                System.out.println(destPer[i].id + "," + destPer[i].name + "   地址:" + destPer[i].hashCode());
        }

        //拷贝成功,销毁srcPer数组
        srcPer = null;
        //建议垃圾回收器启动,建议归建议,垃圾少时可能不会启动
        System.gc();
    }

}

class Person {
    int id;
    String name;

    //构造方法
    public Person() {

    }
    public Person(int id, String name) {
        this.id = id;
        this.name = name;
    }
}

运行截图:
Java中一维数组的扩容与拷贝
数组存储引用数据类型,扩容时进行拷贝的内存图:
Java中一维数组的扩容与拷贝


总结:
java中对数组的扩容是:

先建立一个大容量的数组,然后将小容量数组中的数据一个一个拷贝到大数组当中。

拷贝的方法:
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int len);

提醒:如果数组存储的是引用数据类型,System.arraycopy()方法拷贝的是地址,不是对象。

本文地址:https://blog.csdn.net/pipizhen_/article/details/107272502