源码分析:Arrays.copyOf()

本文探讨了JAVA中Arrays.copyOf()方法的内部实现,详细解析了最通用的方法源码,包括创建指定长度的新数组和调用本地方法的过程。通过分析,我们了解到该方法返回的是源数组的副本,而非原始数组。
摘要由CSDN通过智能技术生成

数组拷贝原理

在使用Arrays工具类的过程中,经常会使用到copyOf()的方法,那么底层究竟如何实现的呢?我们看一下。

最通用的方法源码

 /**
     * Copies the specified array, truncating or padding with nulls (if necessary)
     * so the copy has the specified length.  For all indices that are
     * valid in both the original array and the copy, the two arrays will
     * contain identical values.  For any indices that are valid in the
     * copy but not the original, the copy will contain <tt>null</tt>.
     * Such indices will exist if and only if the specified length
     * is greater than that of the original array.
     * The resulting array is of the class <tt>newType</tt>.
     *
     * @param <U> 源数组的类
     * @param <T> 返回的数组的类
     * @param  original 需要复制的源数组
     * @param newLength 新数组的长度
     * @param newType 返回的数组的类型
     * @return 返回指定长度的,源数组的副本,newLength>original .length,则多余的部分使用 nulls
     * @throws NegativeArraySizeException if <tt>newLength</tt> is negative
     * @throws NullPointerException if <tt>original</tt> is null
     * @throws ArrayStoreException if an element copied from
     *     <tt>original</tt> is not of a runtime type that can be stored in
     *     an array of class <tt>newType</tt>
     * @since 1.6
     */
    public static <T,U> T[] copyOf(U[] original, int newLength, Class<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值