java数组拼接

JAVA数组拼接(扩容)

        int[] A=new int[]{1,3,5,7,9};
        int[] B=new int[]{2,4,6,8,10};
        arrayJoin(A,B);
    }
    public static void arrayJoin(int[] a,int[] b){
        int[] arr=new int[a.length+b.length];//开辟新数组长度为两数组之和
        for(int i=0;i<a.length;i++){//拷贝a数组到目标数组arr
             arr[i]=a[i];
        }
        for(int j=0;j<b.length;j++){//拷贝b数组到目标数组arr
            arr[a.length+j]=b[j];
        }
        for(int i=0;i<arr.length;i++){//输出目标数组
            System.out.print(arr[i]+" ");
        }
    }
}

实际在java中可用java.util.Arrays.copyOf(源数组名称,新数组长度)命令直接实现数组扩容。

public class Day12_2{
    public static void main(String[] args){
        int[] A=new int[]{1,3,5,7,9};
        int[] B=new int[]{2,4,6,8,10};
        int[] result=java.util.Arrays.copyOf(A,10);
        //使result数组长度为10,并将A数组拷贝至新数组,此时result数组与原数组不是同一块内存,原来的内存还是5个元素,result的是扩容后的空间
        for(int x=0;x<B.length;x++){
            result[A.length+x]=B[x];
        }
        for(int i:result){
            System.out.print(i+" ");
        }
        System.out.print("");//换行
    }
}

public class Day12_2{
    public static void main(String[] args){
        int[] A=new int[]{1,3,5,7,9};
        int[] B=new int[]{2,4,6,8,10};
        int[] result=java.util.Arrays.copyOf(A,10);//动态扩容,数值为java int默认值0
        // for(int x=0;x<B.length;x++){
        //     result[A.length+x]=B[x];
        // }
        for(int i:result){
            System.out.print(i+" ");
        }
        System.out.print("");
    }
}

上述讲到的是java中数组拷贝的模拟实现和自行实现语句,那么既然有数组完整拷贝肯定也就有数组部分拷贝。所以数组部分拷贝的语句是

System.arraycopy(源数组名称,源数组开始点,目标数组名称,目标数组开始点,拷贝长度)

但一定要注意的是目标数组拷贝位置确定后是连续拷贝的。

public class Day12_2{
    public static void main(String[] args){
        int[] A=new int[]{1,2,3,4,5,6,7,8};
        int[] B=new int[]{22,102,45,34,67,89,122};
        System.arraycopy(B,2,A,4,3);//源数组为B(将数组B部分元素拷贝至A数组),拷贝起始点下标为2,即从45开始拷贝;A数组拷贝开始点为下标为4,即从5开始更改数组内容,拷贝长度为3
        for(int i:A){//用foreach语句输出数组A
            System.out.print(i+" ");
        }
        System.out.print("");
    }
}

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值