Unsere Ausgangsposition ist
int[][] x = {{3,1,4},{1,5,9}};
int[] y = {2,6,7};
die als
gezeigt werden kann
x → { [0] , [1] }
↓ ↓ // each 1D array like {3,1,4} can be also shown as
{3,1,4} {1,5,9} // { [0] [1] [2] }
// ↓ ↓ ↓
y → {2,6,7} // 3 1 4 but I skipped that for simplicity
(da jede 2D-Array in Java ist einfach 1D Array von anderen 1D Arrays).
Wenn wir ausführen y = x[1];
y
wird nun Bezug auf gleichen Array sein, die in x[1]
gespeichert ist (es ist nicht von Original-Array mit gleichen Elemente kopiert wird, ist es elbe Array ist).
So Situation Bogen ist ähnlich
x → { [0] , [1] }
↓ ↓
{3,1,4} {1,5,9}
↑
y ──────────────────────┘
Das bedeutet, dass wir das gleiche Array über zwei Referenzen ändern können y
und x[1]
und jede Änderung kann auch über andere Referenz zu sehen.
Wenn wir also
y[1] = 1;
tun es auch Array von x[1]
gehalten beeinflussen wie
x → { [0] , [1] }
↓ ↓
{3,1,4} {1,1,9}
↑ └─changed
y ─────────────────────┘
Jetzt x
wie {{3,1,4},{1,1,9}};
aussieht.
x → {
├[0] → {
│ ├─[0] → 3
│ ├─[1] → 1 //x[0][1]
│ └─[2] → 4
│ }
└[1] → {
├─[0] → 1
├─[1] → 1 //x[1][1]
└─[2] → 9
}
}
So, da x[0][1] = 1
und x[1][1]=1
ihre Summe 2
.
@Gendarme ich aha die Ausgabe wie das ist geprüft. –
@JCole '1 + 1 = 2' Dies ist ein grundlegendes Java ... –
Dies liegt daran, dass Sie' int [] y' zuweisen, um 'int [] [] x' zweite Zeile zu sein. Also, was auch immer du mit "y" machst, wird auch in "x" vorkommen. Sie möchten 'Array.clone()' oder 'Array.copy()' verwenden, damit dieses Problem nicht auftritt. – robotlos