개발/JAVA

배열 복사 arraycopy

보리ing 2019. 3. 20. 17:27

 tcp/ip 통신에서 

서버로 데이터를 보내기 위해 바디 값에 헤더값을 추가, 그리고 헤더값에

바디값에 대한 정보를 담아야 했다.

때문에 바이트형식의 배열을 생성하고 기존의 값을 변환하여 옮겨야 했다.

이 때 사용하는 것이 System.arraycopy 메소드다.


사용법은


arraycopy(Object src, int srcFrom, object mainSrc, int mainSrcFrom, length)


에서

src = 옮길 배열

srcFrom =  옮길배열의 시작위치

mainSrc= 옮겨질 대상의 배열

mainSrcFrom = 옮겨질 배열에서 덮힐 시작위치

length = 옮겨지는 배열의 수

이다.


따라서 


헤더와 바디를 message 배열에 넣는다고 할 때



byte[] message = new byte[header.length+body.length];

System.arraycopy(header, 0, message, 0, header.length);

System.arraycopy(body, 0, message, header.length, body.length);


가 된다.


arraycopy의 다른 쓰임으로는 길이가 긴 array 배열이 있을 때 이를 통해 초기화하는 경우 빠르게 처리할 수 있다고 한다.