Hallo Liebe Java Freunde,
ich verstehe leider nicht den unterschied zwischen diesen beiden Begriffen. Ich habe mich im Internet umgeschaut und finde keine Erklärung wo es wirklich "Klick " macht und ich das selber
an ein Beispiel sagen ob eine Methode als call by reference oder value geschrieben ist.
Ansicht kann ich diese Beiden worte " gut " erklären z.B :
Florian hat ein Bild und möchte das an Sabine schicken. Wenn Florian das Bild Kopiert und an
Sabine schickt dann hat Sabine das gleiche Bild. Führt Sabine Veränderung an diesem Bild dann hat es keine Auswirkung auf Florians Bild. (Call by Value). Wenn Florian jedoch ein link an Sabine sendet wo das Bild zu sehen ist dann sind jegliche Veränderungen die Sabine führt auch bei Florian zu sehen. (Call by reference)
oder anders:
Einfache Werte werden kopiert und Änderungen
an den lokalen Kopien haben keine weiteren Auswirkungen Call by Value). Bei komplexen
Werten wird eine Referenz übergeben, mittels derer die Methode auf die
Inhalt zugreifen und sie dauerhaft verändern kann.(Call by reference)
Aber leider kann ich das nicht auf Methoden umsetzen wenn mir 2 Methoden angezeigt werden kann ich nicht sagen ob das Cbv oder Cbr ist.
z.B diese Methoden
ich verstehe leider nicht den unterschied zwischen diesen beiden Begriffen. Ich habe mich im Internet umgeschaut und finde keine Erklärung wo es wirklich "Klick " macht und ich das selber
an ein Beispiel sagen ob eine Methode als call by reference oder value geschrieben ist.
Ansicht kann ich diese Beiden worte " gut " erklären z.B :
Florian hat ein Bild und möchte das an Sabine schicken. Wenn Florian das Bild Kopiert und an
Sabine schickt dann hat Sabine das gleiche Bild. Führt Sabine Veränderung an diesem Bild dann hat es keine Auswirkung auf Florians Bild. (Call by Value). Wenn Florian jedoch ein link an Sabine sendet wo das Bild zu sehen ist dann sind jegliche Veränderungen die Sabine führt auch bei Florian zu sehen. (Call by reference)
oder anders:
Einfache Werte werden kopiert und Änderungen
an den lokalen Kopien haben keine weiteren Auswirkungen Call by Value). Bei komplexen
Werten wird eine Referenz übergeben, mittels derer die Methode auf die
Inhalt zugreifen und sie dauerhaft verändern kann.(Call by reference)
Aber leider kann ich das nicht auf Methoden umsetzen wenn mir 2 Methoden angezeigt werden kann ich nicht sagen ob das Cbv oder Cbr ist.
z.B diese Methoden
Java:
static int[] legeQuadrateAn( int l ) {
int[] feld = new int[l];
for( int i=0; i<l; i++ ) feld[i] = i*i;
return feld;
}
Java:
static void tausche( int[] feld, int i, int j ) {
int tmp = feld[i];
feld[i] = feld[j];
feld[j] = tmp;
}