博客来源:

项目过程中用到byte[]数组相加问题,给出两个byte[] 需要合并成一个byte[]进行计算…那么需求来了……数据量达10W级,怎么合并

调用系统自带方法(System.arraycopy)

参考程序

@org.junit.Test
public void fun(){//创建一个存储被拷贝的字节数组,长度一定要比被拷贝字节数组大byte[] bytes = new byte[20];//创建一个需要字节拷贝的数组byte[] byte_name = "xiaoming".getBytes();//调用系统方法进行拷贝System.arraycopy(byte_name, 0, bytes, 5, byte_name.length);//输出原字节数组,两者进行比较for (byte bb :byte_name) {System.out.print(bb);}//换行System.out.println();//输出被拷贝的数组,两者进行比较for (byte bb :bytes) {System.out.print(bb);}
}

运行结果,已经按照程序要就进行拷贝

下面进行详细介绍下,系统方法  (System.arraycopy)

简单用法:

java.lang.System public static void

arraycopy(@NotNull     Object src,           被拷贝的字节数组
                                              int srcPos,          从被拷贝的字节数组的第几位开始拷贝
                                              @NotNull Object dest,    拷贝到这个字节数组中
                                              int destPos,        从第几位开始拷贝被拷贝的数组
                                              int length            拷贝多少位被拷贝的字节数组

来!看一下官方解释, 其实也就是上面的解释,加之上面的程序,尝试几次就好啦

java.lang.System public static void arraycopy(@NotNull Object src,
                                                         int srcPos,
                                                         @NotNull Object dest,
                                                         int destPos,
                                                         int length)
Copies an array from the specified source array, beginning at the specified position, to the specified position of the destination array. A subsequence of array components are copied from the source array referenced by src to the destination array referenced by dest. The number of components copied is equal to the length argument. The components at positions srcPos through srcPos+length-1 in the source array are copied into positions destPos through destPos+length-1, respectively, of the destination array.
If the src and dest arguments refer to the same array object, then the copying is performed as if the components at positions srcPos through srcPos+length-1 were first copied to a temporary array with length components and then the contents of the temporary array were copied into positions destPos through destPos+length-1 of the destination array.
If dest is null, then a NullPointerException is thrown.
If src is null, then a NullPointerException is thrown and the destination array is not modified.
Otherwise, if any of the following is true, an ArrayStoreException is thrown and the destination is not modified:

  • The src argument refers to an object that is not an array.
  • The dest argument refers to an object that is not an array.
  • The src argument and dest argument refer to arrays whose component types are different primitive types.
  • The src argument refers to an array with a primitive component type and the dest argument refers to an array with a reference component type.
  • The src argument refers to an array with a reference component type and the dest argument refers to an array with a primitive component type.

Otherwise, if any of the following is true, an IndexOutOfBoundsException is thrown and the destination is not modified:

  • The srcPos argument is negative.
  • The destPos argument is negative.
  • The length argument is negative.
  • srcPos+length is greater than src.length, the length of the source array.
  • destPos+length is greater than dest.length, the length of the destination array.

Otherwise, if any actual component of the source array from position srcPos through srcPos+length-1 cannot be converted to the component type of the destination array by assignment conversion, an ArrayStoreException is thrown. In this case, let k be the smallest nonnegative integer less than length such that src[srcPos+k] cannot be converted to the component type of the destination array; when the exception is thrown, source array components from positions srcPos through srcPos+k-1 will already have been copied to destination array positions destPos through destPos+k-1 and no other positions of the destination array will have been modified. (Because of the restrictions already itemized, this paragraph effectively applies only to the situation where both arrays have component types that are reference types.)

Params:
                    src – the source array.
                    srcPos – starting position in the source array.
                    dest – the destination array.
                    destPos – starting position in the destination data.
                    length – the number of array elements to be copied.
                    
Throws:
                    IndexOutOfBoundsException – if copying would cause access of data outside array bounds.
                    ArrayStoreException – if an element in the src array could not be stored into the dest array because of a type mismatch.
                    NullPointerException – if either src or dest is null.
                    
External annotations:
                    Parameter src: @org.jetbrains.annotations.NotNull
                    Parameter dest: @org.jetbrains.annotations.NotNull

byte数组快速拷贝,byte数组合并,System.arraycopy详解相关推荐

  1. System.arraycopy详解

    一.前言 对数组的复制,有四种方法: for clone System.arraycopy arrays.copyof 下面分析一下最常用的System.arraycopy() 二.源码拜读 1.源码 ...

  2. System.arraycopy()详解

    java.lang.System.arraycopy() 方法复制指定的源数组的数组 ,在被copy的数组指定的位置开始,到目标数组的指定位置. 具体方法如下: public static void ...

  3. php 合并数组对象,JS内数组合并方法与对象合并实现步骤详解

    这次给大家带来JS内数组合并方法与对象合并实现步骤详解,JS内数组合并方法与对象合并实现的注意事项有哪些,下面就是实战案例,一起来看一下. 1 数组合并 1.1 concat 方法var a=[1,2 ...

  4. C++中数组和指针的关系(区别)详解

    C++中数组和指针的关系(区别)详解 本文转自:http://c.biancheng.net/view/1472.html 博主在阅读后将文中几个知识点提出来放在前面: 没有方括号和下标的数组名称实际 ...

  5. System.load 和 System.loadLibrary详解

    System.load 和 System.loadLibrary详解 1.它们都可以用来装载库文件,不论是JNI库文件还是非JNI库文件.在任何本地方法被调用之前必须先用这个两个方法之一把相应的JNI ...

  6. system()函数详解

    windows下system () 函数详解 windows操作系统下system () 函数详解(主要是在C语言中的应用) 函数名: system 功 能: 发出一个DOS命令 用 法: int s ...

  7. java字符串数组拷贝函数_java 数组的拷贝 对象数组的拷贝 System.arraycopy函数

    /* java 数组的操作   System类的arraycopy静态函数用于数组拷贝   数组是不能越界的 对象数组的复制实际上是复制的引用的拷贝  也就是对象的地址 */ class Point ...

  8. java 数组的拷贝 对象数组的拷贝 System.arraycopy函数

    /* java 数组的操作   System类的arraycopy静态函数用于数组拷贝   数组是不能越界的 对象数组的复制实际上是复制的引用的拷贝  也就是对象的地址  */ class Point ...

  9. c语言编程 输入螺旋数组,C语言 经典题目螺旋矩阵 实例详解

    C语言 经典题目螺旋矩阵 实例详解 C语言 经典题目螺旋矩阵 //N阶螺旋矩阵 #include #include int main() { int N,i,j,n,num=1; int a[10][ ...

最新文章

  1. Linux上 Can‘t connect to X11 window server using XX as the value of the DISPLAY 错误解决方法
  2. python 3.6.0新语法_详解Python3.6正式版新特性
  3. JQuery源码笔记jQuery.access研究学习(13)
  4. 开发一款浏览器内核需要学习哪些方面的知识?
  5. vue +element 导出多级表头(标题)
  6. el-input点击事件
  7. java塞班播放器_coreplayer移动播放器下载塞班版s60v5 v1.42_手机通用播放器
  8. mp3分割方法,如何将mp3分割
  9. 辅警小丁同志 灵宝西站派出所第一警务区赵桥
  10. 微分中值定理之柯西中值定理
  11. 人到五十岁以后做什么生意最好?
  12. (日) 暮苍山兰舟 (小),
  13. CaptureScreenshot
  14. Kubernetes学习笔记——k8s基本概念初探
  15. 学无止境!iOS上超好用的5个自学APP!建议收藏
  16. opengl与显卡驱动的关系
  17. m基于MATLAB的上行链路MIMO关键技术的研究与性能分析
  18. Centos7 ping网络提示connect:Network is unreachable
  19. c#里namespace是什么意思?
  20. Win10 连接无线不能输入密码字符,一输入就卡死

热门文章

  1. 不是有效的Win32位应用程序
  2. Android动画案例(一) 帧动画
  3. ps因计算机限制打不开,radeon设置打不开,ps设置性能打不开
  4. oracle 财报2017q2,唯品会发布2017Q2财报:净营收突破175亿
  5. oracle r11与r12区别,R12 与 R11 的区别
  6. item_search - 按关键字搜索淘宝商品
  7. mac QQ 聊天记录 数据表
  8. 2-1 古埃及探秘-金字塔
  9. smb android 客户端,谷歌放出安卓版Samba客户端 但仅支持SMBv1
  10. 安博河北实训基地java+android