转载自:http://blog.csdn.net/java2000_net/article/details/4059465

System提供了一个native 静态方法arraycopy(),我们可以使用它来实现数组之间的复制。其函数原型是: public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) src:源数组; srcPos:源数组要复制的起始位置; dest:目的数组; destPos:目的数组放置的起始位置; length:复制的长度。 注意:src and dest都必须是同类型或者可以进行转换类型的数组. 有趣的是这个函数可以实现自己到自己复制.

import java.util.Arrays;
/**
* 老紫竹JAVA提高教程 - System.arraycopy方法的使用。<br>
* <br>
* 从指定源数组中复制一个数组,复制从指定的位置开始,<br>
* 到目标数组的指定位置结束
*
* @author 老紫竹的家(java2000.net,laozizhu.com)
*
*/
public class LessionSystemArraycopy {
public static void main(String[] args) {
// 此方位为native方法。
// public static native void arraycopy(
// Object src, int srcPos, Object dest,
// int destPos, int length);
// 初始化
int[] ids = { 1, 2, 3, 4, 5 };
System.out.println(Arrays.toString(ids)); // [1, 2, 3, 4, 5]
// 测试自我复制
// 把从索引0开始的2个数字复制到索引为3的位置上
System.arraycopy(ids, 0, ids, 3, 2);
System.out.println(Arrays.toString(ids)); // [1, 2, 3, 1, 2]
// 测试复制到别的数组上
// 将数据的索引1开始的3个数据复制到目标的索引为0的位置上
int[] ids2 = new int[6];
System.arraycopy(ids, 1, ids2, 0, 3);
System.out.println(Arrays.toString(ids2)); // [2, 3, 1, 0, 0, 0]
// 此功能要求
// 源的起始位置+长度不能超过末尾
// 目标起始位置+长度不能超过末尾
// 且所有的参数不能为负数
try {
System.arraycopy(ids, 0, ids2, 0, ids.length + 1);
} catch (IndexOutOfBoundsException ex) {
// 发生越界异常,数据不会改变
System.out.println("拷贝发生异常:数据越界。");
}
System.out.println(Arrays.toString(ids2)); // [2, 3, 1, 0, 0, 0]
// 如果是类型转换问题
Object[] o1 = { 1, 2, 3, 4.5, 6.7 };
Integer[] o2 = new Integer[5];
System.out.println(Arrays.toString(o2)); // [null, null, null, null, null]
try {
System.arraycopy(o1, 0, o2, 0, o1.length);
} catch (ArrayStoreException ex) {
// 发生存储转换,部分成功的数据会被复制过去
System.out.println("拷贝发生异常:数据转换错误,无法存储。");
}
// 从结果看,前面3个可以复制的数据已经被存储了。剩下的则没有
System.out.println(Arrays.toString(o2)); // [1, 2, 3, null, null]
}
}

[Java基础] System.arraycopy使用的更多相关文章

  1. Java 基础 - System.arraycopy() 浅拷贝 深拷贝

    ref: https://blog.csdn.net/balsamspear/article/details/85069207 https://blog.csdn.net/balsamspear/ar ...

  2. java基础-System类常用方法介绍

    java基础-System类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.System类概念 在API中system类介绍的比较简单,我们给出定义,system中 ...

  3. Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V

    最近下载一个新版本的adt-bundle,Android API是20. 把Plain Text控件往布局上面拖时,发现拖不上去,出现了下面的错误: Exception raised during r ...

  4. ECLIPSE android 布局页面文件出错故障排除Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V

    在布局添加控件手动添加还是拖的添加,添加edittext后布局就不好用,其他控件好用,然后就说下面这段话 Exception raised during rendering: java.lang.Sy ...

  5. android 布局页面文件出错故障排除Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V

    今天在看布局文件的时候出现 android 布局页面文件出错故障排除Exception raised during rendering: java.lang.System.arraycopy([CI[ ...

  6. java.lang.System.arraycopy() 与java.util.Arrays.copyOf()的区别

    java.lang.System.arraycopy() 与java.util.Arrays.copyOf()的区别 一.java.lang.System.arraycopy() 该方法的声明: /* ...

  7. java的system.arraycopy()方法

    java.lang.System的静态方法arraycopy()可以实现数组的复制,讲课的老师说这个方法效率比较高,如果数组有成千上万个元素,那么用这个方法,比用for语句循环快不少.于是我试了试,发 ...

  8. Java中 System.arraycopy() 和 Arrays.copyOf()方法

    System.arraycopy() 和 Arrays.copyOf()方法 阅读源码的话,我们就会发现 ArrayList 中大量调用了这两个方法.比如:我们上面讲的扩容操作以及add(int in ...

  9. 论java中System.arrayCopy()与Arrays.copyOf()的区别

    如果我们想拷贝一个数组,我们可能会使用System.arraycopy()或者Arrays.copyof()两种方式.在这里,我们将使用一个比较简单的示例来阐述两者之间的区别. 首先先说System. ...

随机推荐

  1. Linux Systemcall Int0x80方式、Sysenter/Sysexit Difference Comparation

    目录 . 系统调用简介 . Linux系统调用实现方式的演进 . 通过INT 0x80中断方式进入系统调用 . 通过sysenter指令方式直接进入系统调用 . sysenter/sysexit编程示 ...

  2. Maven学习笔记-01-Maven入门

    一 Maven的基本概念 Maven(翻译为"专家","内行")是跨平台的项目管理工具.主要服务于基于Java平台的项目构建,依赖管理和项目信息管理. 1  项 ...

  3. 检验php用时

    <?php// 实例1 /** * @start time */function proStartTime() { global $startTime; $mtime1 = explode(&q ...

  4. xampp 安装red扩展出错解决

    Linux Mint + Xampp Error + ‘grep: /opt/lampp/include/php/main/php.h: No Such File Or Directory’ FEBR ...

  5. hdu 1049 Climbing Worm

    解题思路: 1. 两种情况,0x1:井深度小于一次跳的高度.0x2:井深度大于一次跳的高度 2.如果 属于 0x1 则一次跳出 3.否则 本次解题中直接枚举跳的次数 一直循环,直到 [每次跳的真实高度 ...

  6. JS面试题及答案总结

    1. 截取字符串abcdefg的efg  <div id="test">abcdefg</div> var mytext=document.getEleme ...

  7. [Socket网络编程]由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。

    原文地址:http://blog.sina.com.cn/s/blog_70bf579801017ylu.html,记录在此方便查看 解决办法: MSDN的说明: Close 方法可关闭远程主机连接, ...

  8. 【社招】来杭州吧,阿里国际UED招前端~~

    来杭州吧,阿里国际UED招前端~~ 依稀记得,几年前在北京的日子,两点一线的生活方式,似乎冲淡模糊了身边的一切,印象最深刻的莫过于北京的地铁站了吧(因为只有等地铁,搭地铁的时候,才能够停下脚步,静静地 ...

  9. 抓包工具 wireshark

    http://fangxin.blog.51cto.com/1125131/735178

  10. weblogic <BEA-000438>

    现在创建域并启动服务器, 或许会发现如下提示的错误信息:<Error> <Socket> <BEA-000438> <Unable to load perfo ...