对数组进行赋值是为什么后面赋值不会覆盖前面的的赋值?

全部代码如下:
{

public static void main(String[] args) {
    // 复制某个数组元素数据至另外一个数组中
    String[] num1 = new String[3];
    num1[0] = "1";

    String[] num2 = {"3", "2", "1"};

    // 把num2中的元素存储到num1中
    // 获得数组剩余的空间大小  默认为0
    int len = num1.length;
    int count = 0;// 原数组以及属于的空间
    for (int i = 0; i < len; i++) {
        if (num1[i] == null) {
            break;
        } else {
            count++;
        }
    }

    int shengyv = len - count;// 求得原数组的剩余空间

    int len2 = num2.length;// 要复制元素的个数
    String[] newStringArray = null;
    if (shengyv < len2) {
        // 原数组的空间不够使用   手动扩大一个数组的空间大小   扩容
        // 简单来说:就是创建一个新的数组
        newStringArray = new String[count + len2];
        // 遍历原数组以及复制的数字元素   存储到newStringArray
        int index = 0;
        for (int j = 0; j < count; j++) {
            newStringArray[index] = num1[j];
            index++;
        }
        for (int j = 0; j < len2; j++) {
            newStringArray[index] = num2[j];
            index++;
        }
        System.out.println(Arrays.toString(newStringArray));
    } else {
        // 直接将复制数组内容村粗到原数组中即可
        for (int j = 0; j < len2; j++) {
            num1[count] = num2[j];
            count++;
        }
        System.out.println(Arrays.toString(num1));
    }

下面代码不太懂,第一个循环num1先对newStringArray进行赋值,当第二个循环运行是num2对newStringArray进行赋值,为什么num2赋的值不会覆盖num1的赋值?


for (int j = 0; j < count; j++) {
newStringArray[index] = num1[j];
index++;
}
for (int j = 0; j < len2; j++) {
newStringArray[index] = num2[j];
index++;
}

刚接触Java不太懂,

j因为赋值的下标是index,num1和num2赋值的时候index一直在增加,所以不会覆盖