배열 복사, System.arraycopy() 기본적으로 배열은 한 번 생성한 이후에 크기를 변경할 수 없다. 따라서 기존 배열에서 데이터를 추가하기 위해서 기존 배열보다 저장 공간이 더 큰 새로운 배열을 만든 뒤, 새로운 배열로 데이터를 복사해야 한다. for문을 사용하여 데이터를 복사할 수 있고, for문 말고도 System.arraycopy() 메서드를 사용하여 복사할 수 있다. System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length); src는 원본 배열, srcPos는 원본 배열에서 복사를 시작할 데이터의 인덱스 값이다. dest는 새 배열이고, destPos는 새 배열에서 복사한 데이터를 붙여 넣을 시작 인덱스..
💭 대입 연산 (Assignment) 대입 연산은 객체 복사가 아니다. 따라서 지금부터 설명할 대입과 복사는 연관된 것이 아닌 별개이다. id() 함수는 변수의 주소 값을 반환한다. 대입 연산은 주소 값을 복사하여 대입하는 것이기 때문에 b의 주소도 a의 주소와 같은 것을 확인할 수 있다. 이후 a 값을 변경한 뒤에 b의 값도 변화하는지 확인해본다. a에 1을 더하였다. a와 b는 주소 값이 같았었지만 b 값은 변화되지 않았고, a의 주소가 바뀌었다. 이를 이해하려면 iterable과 immutable의 개념에 대해서 알아야 한다. 지금은 간단히 그림으로만 설명한다. int 타입은 immutable 한 타입이다. 따라서 값 별로 개개인의 메모리 공간을 하나 갖고 있는 것이다. 파이썬에서는 중복된 immu..