Java中数组怎么深度复制

2019-09-26 18:57:29

大家都知道数组的深度复制吧,就是把旧数组复制后,重新生成一块内存空间,并用新数组指向这片内存空间。

有时候循环进行一些操作,放入list,发现,list中的数据都是一个数据,这就尴尬了,我们需要深度复制,才能解决这个问题。或者生成新的,也就是深度复制。


今天,看到了一个java.util.Arrays.copyOf()方法,很适合深复制啊,玩儿一下代码。

int[] a = {1,2,3,4,5,6,7};
  
  int[] b = Arrays.copyOf(a, 7);
  
  System.out.print("数组a:");
  for( int i = 0 ; i < 7; i++) {
   System.out.print(a[i]+",");
  }
  System.out.println("");
  
  System.out.print("数组b:");
  for( int i = 0 ; i < 7; i++) {
   System.out.print(b[i]+",");
  }
  System.out.println("");
  
  a[0] = 8;
  
  System.out.println("*******************");
  System.out.println("我们把a[0]改成8,我们看看对b[0]有影响吗?");
  System.out.println("*******************");
  
  System.out.print("数组a:");
  for( int i = 0 ; i < 7; i++) {
   System.out.print(a[i]+",");
  }
  System.out.println("");
  
  System.out.print("数组b:");
  for( int i = 0 ; i < 7; i++) {
   System.out.print(b[i]+",");
  }
  System.out.println("");

实现


  • 2019-10-09 13:38:20

    NPM依赖包版本号~和^和*的区别

    ~ 会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0 ^ 会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0 * 这意味着安装最新版本的依赖包

  • 2019-10-09 14:39:40

    import双反斜杠\\的意思

    ​ \表示引用根目录下面的PHPEXcel;不用\的话是引用当前目录下面的 PHPExcel

  • 2019-10-09 15:33:31

    nuxt,nuxtjs简单介绍以及使用

    在集成的服务器端框架之间进行选择: 选择您喜欢的 UI 框架: 选择您喜欢的测试框架: 选择你想要的 Nuxt 模式 (Universal or SPA) 添加 axios module 以轻松地将 HTTP 请求发送到您的应用程序中。 添加 EsLint 以在保存时代码规范和错误检查您的代码。 添加 Prettier 以在保存时格式化/美化您的代码。

  • 2019-10-10 00:21:35

    laravel 5.6以上日志理解及日志格式定义

    Laravel/Lumen的日志默认是基于Monolog进行了一层封装,如果要求不高,用起来还是十分容易的,本文基于laravel5.6/Lumen5.6版本进行解说。5.6版对日志系统做了升级,将日志的配置单独放以了config/logging.php 配置文件中,所以现在实用多了。

  • 2019-10-10 10:10:49

    @Scheduled注解各参数详解

    每隔5秒执行一次:*/5 * * * * ? 每隔1分钟执行一次:0 */1 * * * ? 每天23点执行一次:0 0 23 * * ? 每天凌晨1点执行一次:0 0 1 * * ? 每月1号凌晨1点执行一次:0 0 1 1 * ? 每月最后一天23点执行一次:0 0 23 L * ? 每周星期天凌晨1点实行一次:0 0 1 ? * L 在26分、29分、33分执行一次:0 26,29,33 * * * ? 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

  • 2019-10-10 11:07:47

    Java8 - Map更优雅的迭代方式:forEach

    用于两个参数之间进行操作的函数式接口是 BiConsumer。这个函数式接口正好用来操作 Map 的 key 和 value。JDK8强化了针对 Map 类的迭代方式,新增了一个默认方法 forEach,它接收一个 BiConsumer 函数。JDK给出的描述如下: