java中的System.copyof()与Array.copyof()区别

在复制数组时我们可以使用System.copyof(),也可以使用Array.copyof(),但是它们之间是有区别的。以一个简单的例子为例:

System.arraycopy()

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

int[] copied = new int[10];

System.out.println(Arrays.toString(copied));

System.arraycopy(arr, 0, copied, 1, 5);//5是复制的长度

System.out.println(Arrays.toString(copied));

 输出

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

[0, 1, 2, 3, 4, 5, 0, 0, 0, 0]

Arrays.copyOf()

int[] copied = Arrays.copyOf(arr, 10); //10是新数组的长度

System.out.println(Arrays.toString(copied));

copied = Arrays.copyOf(arr, 3);

System.out.println(Arrays.toString(copied));

输出

[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
[1, 2, 3]

最主要的区别

区别是Arrays.copyOf() 不只复制数组元素,也创建一个新数组。

System.arrayCopy 只复制已有的数组。

但是如果我们读Arrays.copyOf()的源码也会发现,它也用到了System.arrayCopy()。

   public static int[] copyOf(int[] original, int newLength) {
int[] copy = new int[newLength];
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength));
return copy

java中的System.copyof()与Array.copyof()区别的更多相关文章

  1. 对于应用需要记录某个方法耗时的场景,必须使用clock_gettime传入CLOCK_MONOTONIC参数,该参数获得的是自系统开机起单调递增的纳秒级别精度时钟,相比gettimeofday精度提高不少,并且不受NTP等外部服务影响,能准确更准确来统计耗时(java中对应的是System.nanoTime),也就是说所有使用gettimeofday来统计耗时(java中是System.curre

    对于应用需要记录某个方法耗时的场景,必须使用clock_gettime传入CLOCK_MONOTONIC参数,该参数获得的是自系统开机起单调递增的纳秒级别精度时钟,相比gettimeofday精度提高 ...

  2. 【Java学习笔记之二十九】Java中的"equals"和"=="的用法及区别

    Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: String str1 = new String(" ...

  3. JAVA中局部变量 和 成员变量有哪些区别

    JAVA中局部变量 和 成员变量有哪些区别 1.定义的位置不一样<重点>***局部变量:在方法的内部成员变量:在方法的外部,直接写在类当中 2.作用范围不一样<重点>***局部 ...

  4. java中String new和直接赋值的区别

        Java中String new和直接赋值的区别     对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才 ...

  5. 【转】彻底弄懂Java中的equals()方法以及与"=="的区别

    彻底弄懂Java中的equals()方法以及与"=="的区别 一.问题描述:今天在用Java实现需求的时候,发现equals()和“==”的功能傻傻分不清,导致结果产生巨大的偏差. ...

  6. 转 Java中final、finally、finalize的区别与用法

    Java中final.finally.finalize的区别与用法   1.简单区别:final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承.finally是异常处理语句结构 ...

  7. Java中print、printf、println的区别

    Java中print.printf.println的区别 区别 print:标准输出,但不换行,不可以空参: println:标准输出,但会自动换行,可以空参,可以看做:println()相当于pri ...

  8. Java中public,private,protected,和默认的区别

    Java中public,private,protected,和默认的区别 1.private修饰词,表示成员是私有的,只有自身可以访问: 2.protected,表示受保护权限,体现在继承,即子类可以 ...

  9. java中public与private还有protect的区别

    java中public与private还有protect的区别 总是忘记.

随机推荐

  1. C#生日提醒小工具

    一个很粗糙的版本,就当一个小例子看一下吧, 运行效果如下: 开发环境VS2017,用的WinForm,涉及一点xml,直接上图. 一.项目涉及的文件如下图: 二.每个文件内容: 1.MainForm  ...

  2. iOS开发值NSUserDefaults类概述

    NSUserDefaults类概述 NSUserDefaults类为和默认的系统进行交互提供了一个系统编程接口.默认的系统允许一个应用来定制它的行为以适应用户的喜好.例如,你可以允许用户去决定你的应用 ...

  3. golang https server分析

    https: HTTPS是http安全版本的实现,在http与tcp之间加了一层ssl/tls安全传输协议 为了防止请求被监听.篡改.冒充,在tls实现过程中引入了数字证书机制,数字证书由第三方权威机 ...

  4. 【Spring】java.lang.IndexOutOfBoundsException: Index: 256, Size: 256

    Spring接受前台的数据超过256出现例如以下异常: org.springframework.beans.InvalidPropertyException: Invalid property 'sp ...

  5. invalid comparison: java.util.ArrayList and java.lang.String——bug解决办法

    今天碰到个问题,解决了很久才搞定,来记录下,希望可以帮助到大家 贴错误源码: 这是一个根据list集合的查找数据的 sql,在接收list的时候加了判断 list != ‘ ’ “”,引起了集合与St ...

  6. 在32位Centos6.4上安装GraphicsMagick

    安装时,make总是有如下错误,最后几行 /bin/sh ./libtool --tag=CC --mode=link gcc -std=gnu99 -g -O2 -Wall -pthread -ld ...

  7. centos7.4 install docker-ce

    1.uninstall old version docker yum -y remove docker-common docker container-selinux docker-selinux d ...

  8. jquery怎么实现页面刷新后保留鼠标点击addclass的样式

    $(document).ready(function(){ $('#rating li').each(function(){ if($($(this)).attr('id')==String(wind ...

  9. python post get请求

    安装 Requests pip install requests import requests requests.get('https://github.com/timeline.json') 使用 ...

  10. 使用Fiddler调试线上JS代码

    在下面的命令框输入“select script”回车来筛选js请求 将HTTP请求重定向到本地的文件,进行web调试.这种调试方式不需要发布到线上再验证,避免了修改不成功.对用户造成影响的风险 左边一 ...