2017-11-12 1 views
0

이 질문은 Java와 관련하여 이전에 묻지 만 현재 처리 중이며 어느 솔루션도 저에게 효과가 없었습니다. 내가 시도배열의 값을 변경하면 처리 중 다른 배열의 값이 변경됩니다.

int[][] array1 = {{1,2,3},{4,5,6}}; 
int[][] array2 = {{7,8,9},{10,11,12}}; 
arrayCopy(array1,array2); 
array2[0][1] = 100; 
println(array1[0][1]); 
//prints 100 despite never altering it 

것들 :

//For Loop 
for(int i = 0; i < array1.length; i++){ 
    array2[i] = array1[i]; 
} 

//Cloning 
array2 = array1.clone(); 
+0

'arrayCopy' 메소드의 구현은 무엇입니까? –

답변

2

당신이 arrayCopy 기능에 대한 설명서를 참조하는 경우, 그것은 arrayCopy이 두 사람과 함께 사용하는 경우

말한다 나는 두 개의 배열을 가지고 (또는 세 개 이상) 차원 배열 첫 번째 레벨에서 참조를 복사합니다. rray는 단순히 "배열 배열"입니다.

따라서 본질적으로 array2 내의 배열을 수정하면 array1 내에 해당 배열이 수정됩니다. 그러나, 당신이 단일 차원 배열을 사용했다면 이것은 그렇지 않을 것입니다. 당신이 상기 행동의 어떤없이 array2array1의 각 배열을 복사 할 경우

다음은 반복 array1의 요소 (가변 배열)의 각을 통해 중첩 for 루프를 만들어야하고 (그 내용을 복사 정수)를 다른 배열에 추가합니다.

예 : 사이드 참고로

int[][] sequence = {{1, 2, 3}, 
        {4, 5, 6}}; 
int[][] accumulator = new int[sequence.length][3]; 

for (int i = 0; i < sequence.length; i++) 
    for (int j = 0; j < sequence[i].length; j++) 
     accumulator[i][j] = sequence[i][j]; 

는이 매우 어려운 특정 변수의 목적을 식별 할 수 등의 변수 array1, array2 명명 피한다. 변수는 그것을 읽음으로써 그것이하는 일이나 목적을 말해야합니다.

관련 문제