Java使用System.arraycopy复制数组
来源:互联网 发布:数据库怎么存图片 编辑:程序博客网 时间:2024/06/05 18:15
我们在项目中经常会复制一个数组元素到另一个数组里面,java复制数组的方法有很多,在这里介绍下JDK自带的System.arraycopy方法,这个方法使用想当简单快捷。
/** * Copies an array from the specified source array, beginning at the * specified position, to the specified position of the destination array. * A subsequence of array components are copied from the source * array referenced by <code>src</code> to the destination array * referenced by <code>dest</code>. The number of components copied is * equal to the <code>length</code> argument. The components at * positions <code>srcPos</code> through * <code>srcPos+length-1</code> in the source array are copied into * positions <code>destPos</code> through * <code>destPos+length-1</code>, respectively, of the destination * array. * <p> * If the <code>src</code> and <code>dest</code> arguments refer to the * same array object, then the copying is performed as if the * components at positions <code>srcPos</code> through * <code>srcPos+length-1</code> were first copied to a temporary * array with <code>length</code> components and then the contents of * the temporary array were copied into positions * <code>destPos</code> through <code>destPos+length-1</code> of the * destination array. * <p> * If <code>dest</code> is <code>null</code>, then a * <code>NullPointerException</code> is thrown. * <p> * If <code>src</code> is <code>null</code>, then a * <code>NullPointerException</code> is thrown and the destination * array is not modified. * <p> * Otherwise, if any of the following is true, an * <code>ArrayStoreException</code> is thrown and the destination is * not modified: * <ul> * <li>The <code>src</code> argument refers to an object that is not an * array. * <li>The <code>dest</code> argument refers to an object that is not an * array. * <li>The <code>src</code> argument and <code>dest</code> argument refer * to arrays whose component types are different primitive types. * <li>The <code>src</code> argument refers to an array with a primitive * component type and the <code>dest</code> argument refers to an array * with a reference component type. * <li>The <code>src</code> argument refers to an array with a reference * component type and the <code>dest</code> argument refers to an array * with a primitive component type. * </ul> * <p> * Otherwise, if any of the following is true, an * <code>IndexOutOfBoundsException</code> is * thrown and the destination is not modified: * <ul> * <li>The <code>srcPos</code> argument is negative. * <li>The <code>destPos</code> argument is negative. * <li>The <code>length</code> argument is negative. * <li><code>srcPos+length</code> is greater than * <code>src.length</code>, the length of the source array. * <li><code>destPos+length</code> is greater than * <code>dest.length</code>, the length of the destination array. * </ul> * <p> * Otherwise, if any actual component of the source array from * position <code>srcPos</code> through * <code>srcPos+length-1</code> cannot be converted to the component * type of the destination array by assignment conversion, an * <code>ArrayStoreException</code> is thrown. In this case, let * <b><i>k</i></b> be the smallest nonnegative integer less than * length such that <code>src[srcPos+</code><i>k</i><code>]</code> * cannot be converted to the component type of the destination * array; when the exception is thrown, source array components from * positions <code>srcPos</code> through * <code>srcPos+</code><i>k</i><code>-1</code> * will already have been copied to destination array positions * <code>destPos</code> through * <code>destPos+</code><i>k</I><code>-1</code> and no other * positions of the destination array will have been modified. * (Because of the restrictions already itemized, this * paragraph effectively applies only to the situation where both * arrays have component types that are reference types.) * * @param src the source array. * @param srcPos starting position in the source array. * @param dest the destination array. * @param destPos starting position in the destination data. * @param length the number of array elements to be copied. * @exception IndexOutOfBoundsException if copying would cause * access of data outside array bounds. * @exception ArrayStoreException if an element in the <code>src</code> * array could not be stored into the <code>dest</code> array * because of a type mismatch. * @exception NullPointerException if either <code>src</code> or * <code>dest</code> is <code>null</code>. */ public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
这是System.class中对arraycopy方法的定义,可以看出来这个方法是native 方法,所以在这里看不到具体的实现,arraycopy接收5个参数,src是源数组(被复制的数组),srcPos是源数组复制的起始位置,dest是目标数组,destPos是目标数组存放的起始位置,length是复制的长度。因为是静态方法,所以直接通过System.arraycopy()就可以调用了。。。有兴趣的小伙伴可以去试试看。。
0 0
- Java使用System.arraycopy复制数组
- System.arraycopy使用复制数组
- Java—使用System.arraycopy()实现数组之间的复制
- java 数组复制:System.arrayCopy 解析
- java 数组复制:System.arrayCopy 深入解析
- java 数组复制:System.arrayCopy 深入解析
- System.arraycopy()实现数组复制
- java使用System.arraycopy对数组扩容
- java数组复制(arraycopy)
- [Java] arraycopy 数组复制
- 【java performance】使用'System.arraycopy ()'代替通过来循环复制数组
- 使用System.arraycopy()实现数组之间的复制
- 使用System.arraycopy()实现数组之间的复制(转)
- 使用System.arraycopy()实现数组之间的复制
- 【转】使用System.arraycopy()实现数组之间的复制
- 使用System.arraycopy()实现数组之间的复制
- 使用System.arraycopy()实现数组之间的复制
- 使用System.arraycopy()实现数组之间的复制
- 【FFmpeg】Windows下FFmpeg调试
- jQuery插件开发精品教程(让你的jQuery更上一个台阶)
- Bmob后端云的使用(1)——入门指导及实现登录注册功能
- OpenGL ES系列 之 基本-1:初始化EGL
- java内存模型(一)
- Java使用System.arraycopy复制数组
- 监控录像数据恢复方法步骤详解
- MiniGUI3移植到Hi3515全过程
- linux常用命令
- android DisplayMetrics
- 支持向量机通俗导论(理解SVM的三层境界)
- 第一章 ARC以前的故事
- 练习 2.3 定义矩形
- 【FFmpeg】Windows下64位ffmpeg编译