# Java 程序：连接两个数组

> 原文： [https://www.programiz.com/java-programming/examples/concatenate-two-arrays](https://www.programiz.com/java-programming/examples/concatenate-two-arrays)

#### 在此程序中，您将学习使用`arraycopy`在没有 Java 的情况下连接两个数组。

## 示例 1：使用`arraycopy`连接两个数组

```java
import java.util.Arrays;

public class Concat {

    public static void main(String[] args) {
        int[] array1 = {1, 2, 3};
        int[] array2 = {4, 5, 6};

        int aLen = array1.length;
        int bLen = array2.length;
        int[] result = new int[aLen + bLen];

        System.arraycopy(array1, 0, result, 0, aLen);
        System.arraycopy(array2, 0, result, aLen, bLen);

        System.out.println(Arrays.toString(result));
    }
}
```

运行该程序时，输出为：

```java
[1, 2, 3, 4, 5, 6]
```

在上面的程序中，我们有两个整数数组`array1`和`array2`。

为了合并（连接）两个数组，我们发现其长度分别存储在`aLen`和`bLen`中。 然后，我们创建一个长度为`aLen + bLen`的新整数数组结果。

现在，为了将两者结合起来，我们使用`arraycopy()`函数将两个数组中的每个元素都复制为结果。

简单来说，`arraycopy(array1, 0, result, 0, aLen)`函数告诉程序将`array1`从索引`0`开始复制到`result`从索引`0`复制到`aLen`。

同样，对于`arraycopy(array2, 0, result, aLen, bLen)`告诉程序从索引`0`开始将`array2`从索引`aLen`复制到`bLen`。

* * *

## 示例 2：在不使用`arraycopy`的情况下连接两个数组

```java
import java.util.Arrays;

public class Concat {

    public static void main(String[] args) {
        int[] array1 = {1, 2, 3};
        int[] array2 = {4, 5, 6};

        int length = array1.length + array2.length;

        int[] result = new int[length];
        int pos = 0;
        for (int element : array1) {
            result[pos] = element;
            pos++;
        }

        for (int element : array2) {
            result[pos] = element;
            pos++;
        }

        System.out.println(Arrays.toString(result));
    }
}
```

运行该程序时，输出为：

```java
[1, 2, 3, 4, 5, 6]
```

在上述程序中，我们不使用`arraycopy`，而是将两个数组`array1`和`array2`的每个元素手动复制到`result`。

我们存储`result`所需的`length`，即`array1.length + array2.length`。 然后，我们创建一个新的长度数组结果。

现在，我们使用`for-each`循环遍历`array1`的每个元素，并将其存储在`result`中。 分配后，我们将位置`pos`增加 1`pos++`。

同样，我们对`array2`执行相同的操作，并将每个元素从`array1`之后的位置存储在`result`中。