System.arraycopy的测试
ArrayList的源码中数组的拷贝用到该方法:
public static void arraycopy(Object src, --源数组
int srcPos, --源数组要复制的起始位置
Object dest, --目的数组;
int destPos, --目的数组放置的起始位置;
int length) --length:复制的长度(源数组)。
对于基本类型来说:
int[] is = {1,2,3,4,5};
int[] is2 = {4,0,9};
System.arraycopy(is, 2, is2, 1, 2);
is[2] = 99;
System.out.println("is=" + Arrays.toString(is));
System.out.println("is2=" + Arrays.toString(is2));
运行结果:
is=[1, 2, 99, 4, 5]
is2=[4, 3, 4]
对于引用类型来Person:
class Person {
String name;
Person(String n) {
this.name = n;
}
public String toString() {
return "Person [name=" + name + "]";
}
}
引用类型测试:
Person[] p1 = {new Person("A"),new Person("B"),new Person("C")};
Person[] p2 = new Person[4];
p2[0] = new Person("kaixin");
System.arraycopy(p1, 0, p2, 1, p1.length);
System.out.println("改变前p1=" + Arrays.toString(p1));
System.out.println("改变前p2=" + Arrays.toString(p2));
p1[1].name = "CCCCC";
System.out.println("改变后p1=" + Arrays.toString(p1));
System.out.println("改变后p2=" + Arrays.toString(p2));
引用类型测试结果:
改变前p1=[Person [name=A], Person [name=B], Person [name=C]]
改变前p2=[Person [name=kaixin], Person [name=A], Person [name=B], Person [name=C]]
改变后p1=[Person [name=A], Person [name=CCCCC], Person [name=C]]
改变后p2=[Person [name=kaixin], Person [name=A], Person [name=CCCCC], Person [name=C]]
System.arraycopy的测试的更多相关文章
- java的system.arraycopy()方法
java.lang.System的静态方法arraycopy()可以实现数组的复制,讲课的老师说这个方法效率比较高,如果数组有成千上万个元素,那么用这个方法,比用for语句循环快不少.于是我试了试,发 ...
- [Java基础] System.arraycopy使用
转载自:http://blog.csdn.net/java2000_net/article/details/4059465 System提供了一个native 静态方法arraycopy(),我们可以 ...
- Java性能漫谈-数组复制之System.arraycopy
当我还年幼的时候,我很任性,复制数组也是,写一个for循环,来回倒腾,后来长大了,就发现了System.arraycopy的好处. 为了测试俩者的区别我写了一个简单赋值int[100000]的程序来对 ...
- 【Java基础】System.arraycopy()的使用详解
由于在Java中System.arraycopy()方法在一维数组和二维数组中的表现不同,所以做了一个测试 public static void main(String[] args) { int[] ...
- System.arraycopy 怎么使用的?
前言:看 ArrayList 的源码,发现 remove 方法主要依赖了 System.arraycopy() 方法实现的.所以需要了解一下这个方法如何使用.转载请注明出处:https://www.c ...
- Java中 System.arraycopy() 和 Arrays.copyOf()方法
System.arraycopy() 和 Arrays.copyOf()方法 阅读源码的话,我们就会发现 ArrayList 中大量调用了这两个方法.比如:我们上面讲的扩容操作以及add(int in ...
- 002-jdk-数据结构-工具类Collections、Arrays、System.arraycopy
常用备注 一.LIst to Array List<String> list = new ArrayList<String>(); Object[] array=list.to ...
- System.arraycopy()和Arrays.copyOf()的区别
先看看System.arraycopy()的声明: public static native void arraycopy(Object src,int srcPos, Object dest, in ...
- 求System.arraycopy的用法
public class Shuzufuzhi { public static void main(String args[]) { int myArray[]={1,2,3,4,5,6}; in ...
随机推荐
- “全栈2019”Java第六十九章:内部类访问外部类成员详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 【maven】---聚合和继承
前言 自从我知道写maven实战这本书的作者长得随心所欲后,我再拿起这本书真心的不想看前言了.下面分享一下maven中的所谓的聚合和继承. 内容 下文中的子本指的是:多个maven项目. 父本指的是: ...
- kali linux之Msf
目前最流行,最强大,最具扩展性的渗透测试平台软件 基于metasploit进行渗透测试和漏洞分析的流程和方法 框架集成了渗透测试标准(PETS)思想 一定程度上统一了渗透测试和漏洞研究的工作环境 新的 ...
- [Maven实战-许晓斌]-[第二章]-2.4设置HTTP代理
- jmeter简单的接口请求
骤是:在测试计划下面新建一个线程组,线程组下面添加请求,再线程下加入HTTP信息头管理器(如果要求传此参数的话)请求中添加结果和断言 1.打开页面添加一个线程组: 2.线程组中设置参数: 很重要的几个 ...
- 在makefile中打印错误或警告信息
在makefile中打印警告或者错误消息的方法: $(warning xxxxx) 或者 $(error xxxxx) 输出变量方式为: $(warning $(XXX))
- Thread类和Runnable接口的比较
Thread和Runnable的联系 Thread类的定义: public class Thread extends Object implements Runnable 联系:从Thread类的定义 ...
- diff与patch
1.diff diff就是用来比较两个文件之间的区别的,并且是以行为单位比较的,通常用在同一文件或软件的新旧版本区别上. 用法: diff [-bBi] from-file to-file from- ...
- my35_MGR添加新节点
MGR添加节点主要涉及以下两个参数 group_replication_group_seeds #可以动态修改 group_replication_ip_whitelist #需要关闭 ...
- 转 crs damon can't start 2个例子
###sample 1 "node 1 (10.198.127.5): ps -ef|grep ora.crsd root 45613166 47185944 0 10:24:35 pts/ ...