double[] a = new double[100];
a = b; // let b be some other double array[100]
Erstellen Sie ein Array a
Doppel mit einer Größe von 100. Nun genannt, wenn Sie a = b
wird Kopiere die Referenz von b array in die Variable a.
+--------------------------------------------+ <- Suppose whole
a-> | 2.5 | | | | | | | | | | | | | | array is filled
+--------------------------------------------+ with value 2.5
+--------------------------------------------+ <- Suppose whole
b-> | 7.9 | | | | | | | | | | | | | | array is filled
+--------------------------------------------+ with value 7.9
nach a = b
+--------------------------------------------+ <- Suppose whole
| 2.5 | | | | | | | | | | | | | | array is filled
+--------------------------------------------+ with value 2.5
a-> +--------------------------------------------+ <- Suppose whole
b-> | 7.9 | | | | | | | | | | | | | | array is filled
+--------------------------------------------+ with value 7.9
So, jetzt a und b zeigt auf gleiche Array.
public double[] function1(){
return somedouble[100];
}
double[] a = new double[100];
a = function1();
Jetzt ist das gleiche hier passiert. Sie erstellen ein Array mit dem Namen a und rufen dann function1()
auf und weisen wieder den zurückgegebenen Array-Bezug zu a zu. > Function1() und die Rückkehr Array-Referenz genannt werden wird in einer temporären Variablen gespeichert werden -
System.arraycopy(function1(), 0, a, 0, 100);
Hier ist die Berufung Auftrag
1 sein wird.
2 -> Aufruf System.arraycopy(temporary variable, 0, a, 0, 100)
So function1()
wird nur einmal aufgerufen werden.
Als Randnotiz stellen Sie sicher, System.arraycopy(args)
anstelle von System.arrayCopy(args)
a = b ist nicht eine flache Kopie. Es ändert nur den a-Zeiger, um auf den Anfang von b zu zeigen. – aviad
Wenn es ein primitives Array ist, gibt es keinen Unterschied zwischen seichter und tiefer Kopie. Zuerst müssen Sie den Primitiv-/Referenztyp in Java verstehen. Dann lernst du primitive/Referenz-Arrays. Dann weißt du, dass es eine "flache oder tiefe Kopie" über das Referenz-Array gibt. – waltersu