Nie rozumiem czegoś w tych tablicach javy

0

Mam tablicę

int[] a = {1, 2, 3}
int[] b = a;

a[0] = 4;

Po wykonaniu takiego kodu obie tablice są takie same, więc mój wniosek jest taki, że operator przypisania nie kopiuje tablicy (od tego jest Arrays.copyOf), tylko przypisuje b adres tablicy a.

No ok, więc dlaczego taki kod już pozwala zamienić wiersze w tablicy dwuwymiarowej?:

int[][] a = { {1, 2}, {3, 4} };
	   
int[] temp = a[0];
a[0] = a[1];
a[1] = temp;

Dlaczego linia

a[0]=a[1]

nie powoduje, że temp=a[1]

?
0

Tablica jest obiektem, obiekty nie są klonowane (bez wyraźnego życzenia) tylko podstawiana jest referencja.
int[] b = a; - teraz b i a są dwoma nazwami tego samego obiektu.
int[] temp = a[0]; - temp jest referencją na pierwszy element a;
a[0] = a[1]; - w pierwszy element a wpisujemy referencje na drugi element a
a[1] = temp; - w drugi element a wpisujemy referencje temp, czyli na ten "poprzednio pierwszy" element a;

1 użytkowników online, w tym zalogowanych: 0, gości: 1