Tip
Java의 int arr[5][5] = new int[5][5]; 를
메모리로 그려보면 다음과 같이 도식화 됩니다.
글에 적어주신 내용을 보니, 얕은 복사가 된 걸로 보이는데.. Java의 2차원 배열이
메모리 상에 어떻게 할당되는지 알아보세요.
2589번 - 보물섬
Tip
Java의 int arr[5][5] = new int[5][5]; 를
메모리로 그려보면 다음과 같이 도식화 됩니다.
글에 적어주신 내용을 보니, 얕은 복사가 된 걸로 보이는데.. Java의 2차원 배열이
메모리 상에 어떻게 할당되는지 알아보세요.
찾아보니 String 같은건 final이라 clone으로 복사해도 이전값에 영향을 끼치지 않지만, 저건 안되나보더라구요..
일단 이 부분은 코드 올려주시면 추가로 봐 드릴게요. 이렇게만 설명하면 글쎄요..
Clone 이라는 건 Cloneable해야 복사를 할 수 있을 건데..
댓글을 작성하려면 로그인해야 합니다.
nahwasa 4년 전
- 31번째줄처럼 N차원 배열을 복사할 때 N중 반복문으로 복사하는건 뭔가 안이쁘고(그전까진 이렇게 해왔음),
System.arraycopy도 어차피 N-1번 반복문을 돌려야하고요.
그래서 보니 clone()이 있길래 이걸로 해봤더니 이상하게 하도 답이 이상하게 나와서보니 v=arr.clone()에 대해 v가 변경되니 arr도 변경이 되네요.
찾아보니 String 같은건 final이라 clone으로 복사해도 이전값에 영향을 끼치지 않지만, 저건 안되나보더라구요..
흠 보통 저 경우에 어떤식으로 배열을 초기화하시나요?
뭐 이 문제의 경우 v는 new만 시켜두고 41번째줄에서 arr에 대한 조건문을 추가해도 되니 복사안해도 문제는없지만, 차후에 복사할 일이 있을테니까요.
고수분들은 어떤식으로 하시는지 여쭤봅니다.