精华内容
下载资源
问答
  • javaarrayCopy用法

    万次阅读 多人点赞 2017-10-12 12:25:36
    先贴上语法: public static void arraycopy(Object src, int srcPos, Object dest, int destPos,

    先贴上语法:

    public static void arraycopy(Object src,
                                 int srcPos,
                                 Object dest,
                                 int destPos,
                                 int length)
    它可以实现将一个数组的指定个数元素复制到另一个数组中

    直接举例:

    arrayCopy( arr1, 2, arr2, 5, 10);

    意思是;将arr1数组里从索引为2的元素开始, 复制到数组arr2里的索引为5的位置, 复制的元素个数为10个. 

    举例:

    Int[] arr1 ={1,2,3,4,5};

    arrayCopy(arr1, 3, arr1, 2, 2);

    意思是:将arr1从数字4开始 拷贝到arr1的数字3的位置, 拷贝2个数, 也就是说将4和5 拷贝到数字3的位置,相当于删除数字3.


    展开全文
  • 关于Javaarraycopy用法

    千次阅读 2018-03-17 16:39:24
    一、实现数组之间的复制 ...System.arraycopy(c, 0, d, 0, 5); //实现数组之间的复制 for(int n=0;n<d.length;n++) { System.out.println(d[n]); } 将c数组中从索引为0开始长度为5的数据复制到d中...

    一、实现数组之间的复制

    int c[]= {1,2,3,4,5},d[];
    d=new int[5];
    System.arraycopy(c, 0, d, 0, 5); //实现数组之间的复制
    for(int n=0;n<d.length;n++)
    {
        System.out.println(d[n]);
    }       

    将c数组中从索引为0开始长度为5的数据复制到d中,并从索引为0开始。

    这里写图片描述

    输出结果:

    1
    2
    3
    4
    5

    二、实现数组自身的复制

    int c[]= {1,2,3,4,5},d[];
    d=new int[5];
    System.arraycopy(c, 0, c, 3, 2); //实现自我复制
    for(int n=0;n<c.length;n++)
    {
        System.out.println(c[n]);
    }

    将c数组中索引为0长度为2的数据复制到c数组中,起始索引为3

    这里写图片描述

    输出结果:

    1
    2
    3
    1
    2
    
    展开全文
  • 我们先看下arraycopy方法的源码,这是一个native方法,有5个参数 src:这是源数组,数据是从这个数组拷贝的 srcPos:从源数据的哪个位置开始拷贝 dest:这个目的数组,从源数组拷贝的数据拷贝到这个数组 destPos...

     源码及参数说明

    我们先看下arraycopy方法的源码,这是一个native方法,有5个参数

    • src:这是源数组,数据是从这个数组拷贝的
    • srcPos:从源数据的哪个位置开始拷贝
    • dest:这个目的数组,从源数组拷贝的数据拷贝到这个数组
    • destPos:从源数组拷贝过来的数据存放在目的数组的开始位置
    • length:从原数组拷贝的数组元素的个数
    /*
     * @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>.
     */
    @FastNative
    public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);

    使用方法

    直接写几行代码,打印输出验证下

    public class Test6 {
        public static void main(String[] args) {
            int[] src = {1, 2, 3};
            int[] dest = {4, 5, 6, 7, 8, 9};
            System.out.println(Arrays.toString(dest));
            // 拷贝到开始位置
            System.arraycopy(src, 0, dest, 0, src.length);
            System.out.println(Arrays.toString(dest));
            // 拷贝到末尾位置
            dest = new int[]{4, 5, 6, 7, 8, 9}; // 重新初始化数据,因为拷贝后是直接修改目的数据,而不是返回一个新的数组
            System.arraycopy(src, 0, dest, dest.length - src.length, src.length);
            System.out.println(Arrays.toString(dest));
            // 拷贝到中间位置
            dest = new int[]{4, 5, 6, 7, 8, 9};
            System.arraycopy(src, 0, dest, 2, src.length);
            System.out.println(Arrays.toString(dest));
            // 只拷贝源数组的部分元素
            dest = new int[]{4, 5, 6, 7, 8, 9};
            System.arraycopy(src, 1, dest, 0, 1);
            System.out.println(Arrays.toString(dest));
        }
    }

    输出结果如下

    [4, 5, 6, 7, 8, 9]
    [1, 2, 3, 7, 8, 9]
    [4, 5, 6, 1, 2, 3]
    [4, 5, 1, 2, 3, 9]
    [2, 5, 6, 7, 8, 9]

    异常

    从源码可以看出若使用不当,arraycopy方法可能会抛出3种异常

    • ArrayIndexOutOfBoundsException:若拷贝的长度超过数组边界会抛出此异常

    • ArrayStoreException:若源数组的的某个元素无法存储在目的数组,会抛出次异常(类型不一致)

    • NullPointerException:若源数组或者目的数组为null,会抛此异常

    ArrayIndexOutOfBoundsException异常

    int[] src = {1, 2, 3};
    int[] dest = {4, 5, 6, 7, 8, 9};
    // 源数组下标越界,抛ArrayIndexOutOfBoundsException异常
    System.arraycopy(src, -1, dest, 0, src.length);
    // 源数组上标越界,抛ArrayIndexOutOfBoundsException异常
    System.arraycopy(src, 0, dest, 0, 4);
    // 目标数组下标越界,抛ArrayIndexOutOfBoundsException异常
    System.arraycopy(src, 0, dest, -1, src.length);
    // 目标数组上标越界(destPos+length>dest.length-1的情况下),抛ArrayIndexOutOfBoundsException异常
    System.arraycopy(src, 0, dest, 5, src.length);

    ArrayStoreException异常

    public class Test6 {
        public static void main(String[] args) {
            double[] src = {1, 2, 3};
            int[] dest = {4, 5, 6, 7, 8, 9};
            // double类型数据不能拷贝到int类型数组,抛ArrayStoreException异常
            System.arraycopy(src, 0, dest, 0, src.length);
        }
    }

     NullPointerException异常

    public class Test6 {
        public static void main(String[] args) {
            double[] src = null;
            int[] dest = {4, 5, 6, 7, 8, 9};
            // src为null,抛NullPointerException异常
            System.arraycopy(src, 0, dest, 0, src.length);
        }
    }

     

     

    展开全文
  • java arraycopy()

    2020-06-17 13:57:07
    System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。 其函数原型是: public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length) 1 src:源数组; srcPos:源...

    System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。
    其函数原型是:

    public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

    1
    
    src:源数组;
    srcPos:源数组要复制的起始位置;
    dest:目的数组;
    destPos:目的数组放置的起始位置;
    length:复制的长度。
    注意:src and dest都必须是同类型或者可以进行转换类型的数组.
    

    原文链接:https://blog.csdn.net/huangbaokang/article/details/75284550

    展开全文
  • ArrayCopy方法[Java]

    2020-03-24 10:17:33
    title: JavaArrayCopy方法 date: 2020-03-23 16:43:51 biog:https://www.huqifa.com/ tags: - Java categories: - Java ArrayCopy() 作为小白一直在使用for循环对数组进行复制,添加和删除,学习过程中发现...
  • java arraycopy

    2017-06-17 06:28:53
    java 自带的 arraycopy 方法可以将一个数组的一部分拷贝到另一个数组中,其用法为: System.arraycopy(Object sourceArray, int sourceStartPosition, Object destinationArray, int destinationStartPosition,...
  • Java System.arraycopy()方法示例

    千次阅读 2020-07-08 05:24:52
    Java System.arraycopy() is a native static method to copy elements from the ... Java System.arraycopy()是一种本地静态方法,用于将元素从源数组复制到目标数组。 System.arraycopy()方法参数 (System.a...
  • 源码:public static native void arraycopy(Object src, int srcPos, Object dest, int destPos,int length); 参数: src:要复制的数组(源数组) srcPos:复制源数组的起始位置 dest:目标数组 destPos:...
  • //手机终端 请上下左右 滑动屏幕 观看更全!...public class Arraycopy { public static void main(String[] args) { int arr[] = new int [] {9,2,4,6,3,8,22} ; int array[] = new int [] {2...
  • 在复习 “插入单个元素到指定位置”,如果数组大小不够,需要进行扩容,然后将指定位置(index)+1 开始的元素往后挪,所以就使用到了此方法 函数原型为: public static void arraycopy(Object src,int srcPos,...
  • System.arraycopyJava中是用来深拷贝数组的,由于数组是一种引用的数据类型,所以在Java中的赋值操作都是一种引用,即使用指针指向内存中的数组,其实内存就只有一份数组。 * @param src the source array. * @...
  • 阅读源码,每天进步一点点。 public static native void arraycopy(Object src, ...在查看Arrays类源码时看到copyOf()方法使用System.arraycopy进行数组复制。于是深入查看System.arraycopy的具体情况。 在JDK文档...
  • System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。 其函数原型是: public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)1  src:源数组;  ...
  • public static native void arraycopy(Object src, int srcPos, Object dest, int destPos,int length); 参数: src:要复制的数组(源数组) srcPos:复制源数组的起始位置 dest:目标数组 destPos:目标数组...
  • System.arraycopy()方法:见名知意,就是数组的复制方法。 (以下有些部分是网上搜的大神们的内容,之所以重新写一遍只是为了增加自己的印象,绝无抄袭之意!!!!!!!!!!) 源码声明如下: public static...
  • java中的复制数组arraycopy(复制数组,从哪个元素开始复制,目标数组,复制到目标数组的其实下标,复制元素的个数) 【eg】System.arraycopy(aaaa,1,bbbb,0,3); public static void main(String[] args) { System....
  • 1.System.arraycopy public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int len...
  • 一、深度复制和浅度复制的区别 Java数组的复制操作可以分为深度复制和浅度复制,简单来说深度复制,可以将对象的值和对象的内容复制;...二、System.arraycopy()方法实现复制 1、System中提供了一个nati...
  • 使用方法: System.arraycopy(src, srcPos, dest, destPos, length); 注: src:被复制的数组 srcPos:类src中开始复制的位置 dest:进行复制的数组 destPos:复制进dest的位置 length:总共复制的长度 ...
  • Arrays.copyOf,Arrays.copyOfRange,System.arraycopy都是用来复制数组的方法,如果你傻傻分不清,想快速了解它们的用法和区别就一起来看看吧。 1、先来看一下copyOf: 第一个参数original:你从哪个数组复制...
  • Javaarraycopy方法使用其源码简单解析实例应用 其源码 public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length); 简单解析 从源码中可知调用arraycopy()方法...
  • System.arraycopy()是个native方法, 不是由java语言实现的. 函数的声明如下, 作用: 将src中的元素拷贝到dest中, 更具体一点就是, 将src中处于[srcPos, srcPos + length - 1]这段区间上的元素拷贝到dst的[destPos, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,078
精华内容 15,631
关键字:

java的arraycopy用法

java 订阅