博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java数组拷贝
阅读量:6671 次
发布时间:2019-06-25

本文共 1551 字,大约阅读时间需要 5 分钟。

hot3.png

数组的拷贝 分为 2种情况,一种为浅拷贝,即引用传递,第二种为深拷贝,即不单单只是拷贝了引用,同时开辟了一块新的内存空间

一)浅拷贝有三种方式:

//第一种方式利用for循环:int[] a={1,2,4,6};int length=a.length;int[] b=new int[length];for (int i = 0; i < length; i++) {b[i]=a[i];}//第二种方式直接赋值:int[] array1={1,2,4,6};int[] array2=a;/*这里把array1数组的值复制给array2,如果你这样去运行,就会发现此时两个数组的值是一样的。这是传递的是引用(也就是地址),之后改变其中一个数组另一个也会跟着变化。*/ //第三种方式:利用Arrays自带的copyof int copy[] = Arrays.copyOf(a, a.length);

二)一维数组的深拷贝(system.arrayCopy())

        /**

        * 数组深拷贝的方法有如下几种:
        * 1。 调用clone
        * 2。 调用System.arraycopy
        * 以上两种对基本类型和对象类型数据效果等同。
        * 3。 使用FOR循环,将数组的每个元素复制。(注意调用clone方法)
        */

举例:

       Object[] src = new Object[]{ new String("Zhao"),                                        Integer.valueOf(1),                                        Integer.valueOf(2),                                        Integer.valueOf(3),                                        Integer.valueOf(4)};                                      Object[] dest = src.clone();                //1.拷贝数据               // Object[] dest = new Object[5];        // System.arraycopy(src, 0, dest, 0, dest.length);               System.out.println( dest.equals(src));       System.out.println( dest == src );       for (int i = 0; i < dest.length; i++) {           System.out.print( dest[i]+", " );                dest[i] = new String("KE");               //2.改变新数组内容                              System.out.print( dest[i]+", " );                    System.out.println( src[i]+",");          //3.不影响原始数组        }       System.out.println();

 注意: 一维数组下的深拷贝在 多维数组 只是浅拷贝!!

转载于:https://my.oschina.net/reesechou/blog/465934

你可能感兴趣的文章
一个人的 Android 开发
查看>>
Emacs之魂(五):变量的“指针”语义
查看>>
如何从 Angular 1.x 无缝升级到 Angular 2
查看>>
国内首次云计算CRM公测反响良好
查看>>
他俩窃取了34个共享单车账户,两天挣了2万多
查看>>
Half-Life's In-Game Visibility Determination
查看>>
Vitalik Buterin:我们正处于 ICO 泡沫,很多人会亏钱
查看>>
放眼业界看得见的未来 十谈大数据时代
查看>>
WCF技术剖析之十八:消息契约(Message Contract)和基于消息契约的序列化
查看>>
零售ERP系统方案选型―IT只是一个工具
查看>>
GraphQL提供数据接口新思路之数据聚合解决方案
查看>>
CentOS7 安装Firefly及测试
查看>>
术有专攻 | 如何在公私混用的设备上保障企业信息安全
查看>>
安全自动化在于信任,而非技术
查看>>
揭密巴西Banrisul银行网站遭遇5小时劫持的原因
查看>>
安装Linux流量监控工具 - iftop
查看>>
如何令移动下载飞起来 结合LTE与Wi-Fi
查看>>
亚信安全与成都市政府达成战略合作
查看>>
如果你喜欢上了一个程序员小伙
查看>>
大数据时代:统计学是数据分析的灵魂
查看>>