본문 바로가기

프로그램/java

[JAVA]기본형식 배열 복사 방법(clone, System.arraycopy)

반응형

기본형식 배열 복사 방법(clone, System.arraycopy)


1.
int[] 배열은 객체 값이며
int[] 도 참조값을 가진다.

2.
배열끼리의 복사는 참조값 복사이다.
int[] bb = new int[3]{1,2,3};
int[] aa = bb;

두개의 배열은 같은 힙 메모리를 바라보게 된다.

3.
힙 메모리 자체를 값 복사 하기 위해서는
clone() 혹은 System.arraycopy() 를 사용한다.

clone()
int[] bb = new int[3]{1,2,3};
int[] aa = (int[])bb.clone();

System.arraycopy()
int[] bb = new int[3]{1,2,3};
int[] aa = new int[3];

int[] aa = System.arraycopy(bb, 0, aa, 0, aa.length - 0);
param
1 : source array
2 : source array start index
3 : target array
4 : target array start index
5 : copy element count


* file 을 읽어 buffered 스트림을 이용하여 byte배열에 넣는 방법


BufferedInputStream bis = new BufferedInputStream( new FileInputStream( tmpFile ) );

byte[] bArr = new byte[(int)tmpFile.length()];

byte[] buf = new byte[512];


int readSize = 0;

int writeSize = 0;


while( (readSize = bis.read(buf)) > -1 ) {

logger.debug("=====readSize : " + readSize);

//bArr = ArrayUtils.addAll(bArr, buf);

System.arraycopy(buf, 0, bArr, writeSize, readSize);

writeSize += readSize;

}


attachFile.setFileCont(bArr);