Java-Array-Variablen sind Referenztypen.
Ich denke, es ist eine natürliche Grundsache, aber da ich ursprünglich PHP gemacht habe, Für mein eigenes Memorandum habe ich es ein wenig zusammengefasst.
Im Fall des folgenden Codes wird beispielsweise 100 ausgegeben.
int[] a = { 1, 2, 3 };
int[] b = a;
b[0] = 100;
System.out.println(a[0]);
// a[0]Ausgänge 100.
Dies liegt daran, dass Java-Array-Variablen Referenztypen sind. Daher wurde ein Array für int [] a erstellt Weil die Speicheradresse gespeichert ist.
Wenn zum Beispiel die Speicheradresse des von int [] a erstellten Arrays ABC123 ist (ich glaube nicht, dass es tatsächlich eine solche Speicheradresse gibt), Das Array a wird an dieser Speicheradresse (Position) aufgezeichnet, die als ABC123 bezeichnet wird.
Und da ABC123, die die Speicheradresse der Arrayvariablen int [] a ist, in int [] b enthalten ist, ist der Punkt, dass es dasselbe Array ist. Daher ist b [0] = 100 dasselbe wie a [0] = 100.
Wenn Sie den gleichen Code unten in PHP schreiben, wird 1 anstelle von 100 ausgegeben.
$a = [1,2,3];
$b = $a;
$b[0] = 100;
echo $a[0];
//1 wird ausgegeben
Dies ist kein Referenztyp in PHP, sondern wird als Wert übergeben Dies liegt daran, dass das Array von \ $ a selbst kopiert und an \ $ b übergeben wird, nicht die Speicheradresse von \ $ a.
In PHP ist es erforderlich, \ & wie unten gezeigt hinzuzufügen, um es zu einem Referenztyp zu machen.
$a = [1,2,3];
$b = &$a;
// ↑$Vor einem&Anziehen
$b[0] = 100;
echo $a[0];
//100 wird ausgegeben
Auf diese Weise wird es zu einem Referenztyp, und \ $ b enthält die Speicheradresse des von \ $ a erstellten Arrays. Da es gespeichert ist, ist die Operation dieselbe wie im Fall von Java oben.
Recommended Posts