Arrays工具类copyof

发布时间:2022-06-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Arrays工具类copyof脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

copyOf

它是Arrays工具类的方法。使用:Arrays.copyof(原数组,长度);

基本使用

将旧数组中的元素按照指定位置拷贝到新数组中。

package com.powernode.arrays;import java.util.Arrays;public class Demo6 {    public static void main(String[] args) {        int[] arr = {5, 12, 18, 28, 45, 59, 72, 76, 77, 90};        int[] newArr = Arrays.copyOf(arr, 5);        System.out.println("原数组:" + Arrays.toString(arr));        System.out.println("新数组:" + Arrays.toString(newArr));        System.out.println(arr == newArr);    }}

点击进入copyof它的底层是一个这个方法:

  public static int[] copyOf(int[] original, int newLength) {        int[] copy = new int[newLength];        System.arraycopy(original, 0, copy, 0,Math.min(original.length, newLength));        return copy;    }

在点进arraycopy中,可以看到是如下:

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

src:原数组

srcPos:从原数组第几个索引位置开始拷贝

dest:新数组

destPost:从新数组的第几个索引开始赋值

length:从原数组拷贝几个元素

   int[] arr = {5, 12, 18, 28, 45, 59, 72, 76, 77, 90};        int[] newArr = new int[10];        //把arr数组从下标为1的位置开始拷贝到newArr数组的第0个下标开始,元素个数是arr的长度-1个,        System.arraycopy(arr,1,newArr,0,arr.length-1);        System.out.println(Arrays.toString(newArr));结果为:[12, 18, 28, 45, 59, 72, 76, 77, 90, 0]

补充

此方法只有声明,没有实现。第一次看见方法使用关键字native修饰的,native修饰表示这个是一个本地方法。

java有个用户和本地c代码进行互操作的API,称为java本地接口

引出native是因为java是一个跨平台的语言,所以它牺牲了一些对底层的控制,此时需要其他语言的帮助了比如:c、c++。java无法直接访问到操作系统底层,所以使用native方法来帮助实现一些扩展功能。使用native修饰的方法不是用java语言写的,是由c或c++编写的。

可以使用System.arraycopy删除一个元素
        //删除元素下标为2的元素        int[] arr = {5, 12, 18, 28, 45, 59, 72, 76, 77, 90};        int index=2;        System.arraycopy(arr,index+1,arr,index,arr.length-index-1);        arr[arr.length-1]=0;//把最后一个元素置为0        System.out.println(Arrays.toString(arr));结果:[5, 12, 28, 45, 59, 72, 76, 77, 90, 0]
使用system.arraycopy添加一个元素
//在数组中插入一个元素,在下标为2的位置插入222        int[] arr = {5, 12, 18, 28, 45, 59, 72, 76, 77, 90};        int index=2;        int[] newArr=new int[arr.length+1];        //先把arr中的5,12拷贝到newArr中        System.arraycopy(arr,0,newArr,0,index);//[5, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0]        //在把arr中后面的元素拷贝到index+1的位置        System.arraycopy(arr,index,newArr,index+1,arr.length-index);//[5, 12, 0, 18, 28, 45, 59, 72, 76, 77, 90]        newArr[index]=222;        System.out.println(Arrays.toString(newArr));结果为:[5, 12, 222, 18, 28, 45, 59, 72, 76, 77, 90]

 

 

脚本宝典总结

以上是脚本宝典为你收集整理的Arrays工具类copyof全部内容,希望文章能够帮你解决Arrays工具类copyof所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: