Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用旧数组中的内容创建新数组,同时保持旧数组的静态_Java_Arrays - Fatal编程技术网

Java 使用旧数组中的内容创建新数组,同时保持旧数组的静态

Java 使用旧数组中的内容创建新数组,同时保持旧数组的静态,java,arrays,Java,Arrays,假设我有一个整数数组 int[] array = new int[7]; for(int i = 0; i < 7; i++) { array[i] = i; } 我知道语法是错误的,但我只是给出了我要做的事情的大致思路,这样做可能吗?或者我必须创建一个循环并手动将其添加到newArray 方法1 int[] newArr = new int[4]; System.arraycopy(array, 0, newArr, 0, 4); 该方法包含五个参数: src:源数组 srcPosi

假设我有一个整数数组

int[] array = new int[7];
for(int i = 0; i < 7; i++)
{
array[i] = i;
}

我知道语法是错误的,但我只是给出了我要做的事情的大致思路,这样做可能吗?或者我必须创建一个循环并手动将其添加到
newArray

方法1

int[] newArr = new int[4];
System.arraycopy(array, 0, newArr, 0, 4);
该方法包含五个参数:

  • src
    :源数组
  • srcPosition
    :源中您希望开始的位置 抄袭
  • des
    :目标阵列
  • desPosition
    :目标数组中复制到的位置 应该开始了
  • length
    :要复制的元素数
  • 如果src或des中的任何一个为null,此方法将引发NullPointerException。 在以下情况下,它还会引发ArrayStoreException:

    • 如果src不是数组
    • 如果des不是数组
    • 如果src和des是不同数据类型的数组
    方法2

    利用

    array.copyOf(array,4)
    复制前4个元素,截断其余元素


    array.copyOfRange(array,1,5)
    如果需要在数组中间复制元素1-4。

    您可以创建所需大小的新数组(本例中为4),然后使用将内容从一个数组复制到另一个数组。

    您可以用于此目的,它将指定数组的指定范围复制到新数组中

    int[] newArray = Arrays.copyOf(array,4);
    
    copyOfRange(byte[] original,
                     int from,
                     int to)
    

    参数:

    原始-要从中复制范围的数组

    from-要复制的范围的初始索引,包括

    to—要复制的范围的最终索引,独占。(此索引可能位于数组之外。)


    谢谢您的回答,但是对于您最后的方法2,array.copyOfRange(array,1,5)将复制元素1-4。我不知道他们为什么这样做。。。谢谢你的回复,我很抱歉。使用最后一种方法
    copyOfRange(byte[] original,
                     int from,
                     int to)