2016-06-03 3 views
-2
int[] x = new int [] {1,2,3}; 
    int[] y = new int [] {4,5,6,7}; 

    System.out.println(x[0] + ", " + y[0]); 
    x = y; 

    System.out.println(x[0] + ", " + y[0]); 
    x[0] = 42; 

    System.out.println(x[0] + ", " + y[0]); 

Ausgang:Was passiert mit diesen beiden Arrays?

1, 4 
4, 4 
42, 42 

Nun meine Frage ist, warum ist y [0] 42 im dritten Ausdruck und nicht 4? Ich habe nur x [0] geändert, und das "x = y" kam vor dieser Änderung und nicht danach, also wie ist y [0] 42? Ich dachte, das Programm lief von oben nach unten.

+4

verstehen Wegen 'x = y'. Sie machen 'x' beziehen sich auf das gleiche Array wie' y'. – Kayaman

Antwort

3

Arrays sind keine primitiven Werte, sie sind Objekte. Wenn Sie x = y; schreiben, wird das erste Array unerreichbar und Garbage Collectable, und beide Variablen zeigen jetzt auf das zweite Array. Es gibt nur ein Array, mit dem Sie ab sofort arbeiten.

0

x und y beide auf das gleiche Array zeigen. Wenn Sie den Wert eines der Elemente im Array ändern, wird dies durch die Referenzen widergespiegelt, die Sie für den Zugriff auf das Array verwenden.

Update: einen Blick auf https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html Nehmen Sie diese Ihnen helfen, das Konzept von Arrays in Java

Verwandte Themen