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 ...
随机推荐
- binlog2sql
从MySQL binlog解析出你要的SQL.根据不同选项,你可以得到原始SQL.回滚SQL.去除主键的INSERT SQL等. 安装 shell> git clone https://gith ...
- “全栈2019”Java第五十二章:继承与初始化详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 【Oracle】安装注意事项
装了卸载,卸载装,一会儿缺少配置功能,一会对一些莫名的命令操作不能顺利执行.于是还是选择了重装系统.(策略,与其纠结那些个抛错命令和那些烦人的长长的日志,不如重新装系统,这个绝对是最省时间的) 1.安 ...
- kali linux之Bdfproxy
Bdfproxy(mitmproxy) 基于流量劫持动态注入shellcode(arp欺骗,dns欺骗,流氓ap) 步骤: 开启流量转发---------sysctl -w net.ipv4.ip_f ...
- mysql扩展库应用---在线词典程序范例
1,在mysql中创建数据表words. create table words( id int primary key not null auto_increment, enword varchar( ...
- 动态sql语句和动态传入参数个数
1.可以将要传入的几个参数封装成一个实体类,然后将实体类作为一个参数传入到相应的方法中,这时候就需要这sqlMapper.xml文件中对传入的字段利用<if test=""& ...
- sap server笔记
system 就是sap hana database,如果一个system有多个instance,则必须分散到不同的host中,每个system有唯一的sid. hello各位,jackie建议我们去 ...
- jquery选项卡效果
效果图: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- SPOJ - COT 路径构造主席树
题意:给出一个带权树,多次询问路径\((u,v)\)的第k小权值 这是主席树往区间扩展到树上的套路题 由于是按路径查询,我们无法使用dfs序,但可利用主席树对父亲扩展的方法构造出链 因此要用dfs构造 ...
- 4KM
ip addr add 10.9.8.100/24 broadcast + dev eth0 /etc/sysconfig/network-scripts/ifcfg-eth0 ifdown eth0 ...