zoukankan      html  css  js  c++  java
  • Java 数组的浅拷贝和深拷贝

    浅拷贝:

    在堆内存中不会分配新的空间,而是增加一个引用变量和之前的引用指向相同的堆空间。

    int[] a = {1,2,3,4,5};

    int[]b = a;

    public class Test {
        
        public static void main(String[] args) {
            
            //数组的浅拷贝,a,b两个引用指向同一个数组
            int[] a = {1,2,3,4,5};
            int[] b = a;
            
            for (int i = 0; i < b.length; i++) {
                System.out.print(b[i] + " ");
            }
            
            System.out.println();
        }
    }

    深拷贝:

    在堆内存中分配新空间,将之前的数组堆内存中的内容拷贝到新的空间中。

    int[] a = {1,2,3,4,5};

    int[] b = new int[5];

    System.arraycopy(a, 0, b, 0, 5);

    public class Test {
        
        public static void main(String[] args) {
            
            //数组的深拷贝,a,b两个引用指向同一个数组
            int[] a = {1,2,3,4,5};
            int[] b = new int[5];
            
            /**
             * System.arraycopy(src, srcPos, dest, destPos, length);
             * src:源数组
             * srcPos:源数组中拷贝的起始位置
             * dest:目标数组
             * destPos:目标数组中开始存放的位置
             * length:拷贝的长度
             */
            System.arraycopy(a, 0, b, 0, a.length);
            
            for (int i = 0; i < b.length; i++) {
                System.out.print(b[i] + " ");
            }
            
            System.out.println();
        }
    }
  • 相关阅读:
    平时十二测
    无题十四
    暑假第十测
    无题十三
    noip错题集
    无题十二
    BZOJ整理
    志愿者招募
    修车
    任务安排
  • 原文地址:https://www.cnblogs.com/lialong1st/p/7833776.html
Copyright © 2011-2022 走看看