nahwasa   4년 전

- 31번째줄처럼 N차원 배열을 복사할 때  N중 반복문으로 복사하는건 뭔가 안이쁘고(그전까진 이렇게 해왔음), 
System.arraycopy도 어차피 N-1번 반복문을 돌려야하고요.

그래서 보니 clone()이 있길래 이걸로 해봤더니 이상하게 하도 답이 이상하게 나와서보니 v=arr.clone()에 대해 v가 변경되니 arr도 변경이 되네요.
찾아보니 String 같은건 final이라 clone으로 복사해도 이전값에 영향을 끼치지 않지만, 저건 안되나보더라구요..

흠 보통 저 경우에 어떤식으로 배열을 초기화하시나요?


뭐 이 문제의 경우 v는 new만 시켜두고 41번째줄에서 arr에 대한 조건문을 추가해도 되니 복사안해도 문제는없지만, 차후에 복사할 일이 있을테니까요.

고수분들은 어떤식으로 하시는지 여쭤봅니다.



chogahui05   4년 전

Tip

Java의 int arr[5][5] = new int[5][5]; 를

메모리로 그려보면 다음과 같이 도식화 됩니다.

글에 적어주신 내용을 보니, 얕은 복사가 된 걸로 보이는데.. Java의 2차원 배열이

메모리 상에 어떻게 할당되는지 알아보세요.

chogahui05   4년 전

찾아보니 String 같은건 final이라 clone으로 복사해도 이전값에 영향을 끼치지 않지만, 저건 안되나보더라구요..

일단 이 부분은 코드 올려주시면 추가로 봐 드릴게요. 이렇게만 설명하면 글쎄요..

Clone 이라는 건 Cloneable해야 복사를 할 수 있을 건데..

nahwasa   4년 전

답변 감사합니다!

궁금했던건 Clonable 상속받는것도 안이쁘고..

이전까진 그냥 for문으로 하나씩 넣어 복사해주거나 했는데 혹시 고수분들은 고차원배열 복사할시 어떻게 하시나가 궁금했습니다.

뭔가 섹시한 코드가 있을까싶어서요

댓글을 작성하려면 로그인해야 합니다.