System.arraycopy合并数组需先创建目标数组、确认类型一致、校验源数组非null;两次拷贝参数须精准,小数组(≤16)手动赋值更优,对象数组仅复制引用。
用 System.arraycopy 合并数组本身不难,真正影响性能的是怎么用、在哪用、用之前做什么——它不是“开箱即用”的语法糖,而是直连内存的搬运指令,用对了快几倍,用错了可能比循环还慢。
很多人一上来就写两行 arraycopy,结果运行时报错或数据错乱。真正落地前,这三步不能跳:
arr1.length + arr2.length,少一个元素就抛 ArrayIndexOutOfBoundsException
int[] 和 long[] 不兼容,String[] 可以拷到 Object[],但反过来不行;编译不报错,运行时才炸null 直接抛 NullPointerException,建议合并前加空判断,而不是靠异常兜底合并本质是两段内存搬运,第二段的起始位置决定拼接是否正确:
System.arraycopy(arr1, 0, result, 0, arr1.length)
System.arraycopy(arr2, 0, result, arr1.length, arr2.length) —— 这里的 arr1.length 是关键,不是 0,也不是 arr2.length
destPos 写成 0,导致 arr2 覆盖 arr1 的数据;或写成 result.length - arr2.length,在 arr1 为空时出错它快是有条件的。实测表明,当拷贝长度 ≤ 16 时,JNI 调用开销常超过简单赋值,反而更慢:
result[0] = a[0]; result[1] = a[1]; ... 更稳更快arraycopy,但别指望收益arraycopy 优势开始明显,越大越显著(百万级数组可快 3–5 倍)System.arraycopy 对对象数组只复制引用,不深拷贝:
result[i] 和原 arr1[i] 指向同一个对象实例arraycopy 后遍历调用 clone()(要求实现 Cloneable),或用序列化工具重建Python工程实践之np.loadtxt()读取数据
python中的extend功能及用法
pythonJieba分词处理详解【模式词库的添加、删除自定义词库失败处理等】
pycharm没有找到manage repositories按钮的解决办法
Python+pandas数据分析实践总结
pycharm中报ModuleNotFoundErrorNo module named apostensorflowapos错误解决