Call by Reference

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Call by Reference

    Hallo,

    wir haben letztens in der Schule mal kurz Lineare Datenstrukturen angesprochen und ich habe das mal zu Hause weiter programmiert
    Nun vewirrt mich allerdings mein Code etwas da ich denke das durch die ganzen neuen Objekterzeugung Redundanz entsteht.

    Quellcode

    1. public void addListenElement(String Bezeichnung, int Wert, int Position)
    2. {
    3. if(this.Kopf == null)
    4. {
    5. this.addListenElement(Bezeichnung, Wert);
    6. }
    7. else
    8. {
    9. Listenelement PrevElement = this.searchPrevElement(Position);
    10. Listenelement nextElement = this.searchElement(Position);
    11. PrevElement.setNextElement(new Listenelement(Bezeichnung, Wert));
    12. PrevElement.getNextElement().setNextElement(nextElement);
    13. }
    14. }
    Alles anzeigen


    Ich habe hier eine Methode die im else Bereich eine Objekt vom Typ Listenelement erzeugt. Das Objekt PrevElement bekommt ein Objekt von der Methode searchPrevElement zurück gewiesen (also mittels return).
    Das selbe ist auch bei nextElement.

    Quellcode

    1. public Listenelement searchPrevElement(int Position)
    2. {
    3. int x = 1;
    4. Listenelement tempElement = this.Kopf;
    5. while(x < Position-1)
    6. {
    7. tempElement = tempElement.getNextElement();
    8. x++;
    9. }
    10. return tempElement;
    11. }
    Alles anzeigen


    Hier ist die Methode searchPrevElement. this.Kopf ist auch ein Objekt was direkt am Anfang der Klasse erzeugt wird und am Ende wird tempElement zurück gegeben.

    Meine Frage ist nun, ist das was zurück gegeben wird oder erhalten wird jeweils eine Kopie von dem Objekt oder eine Referenz? Weil wenn es eine Kopie ist dann würde ich meinen das ich ja sehr viele Objekte dann im Speicher habe welche aber nicht angesprochen oder benutzt werden.

    In Google finde ich halt viele Meinungen das Call by Reference bei Java nicht exisitert. Mein Lehrer hat mir aber gesagt das es über Call by Reference verläuft.
  • Von der Logik her sollte die Funktion eine Referenz zurückgegben, da this.Kopf nichts anderes als eine Referenz auf ein Objekt ist.
    Allerdings kenne ich nicht im Detail mit der JVM aus, weswegen ich es nicht sicher für diesen Fall sagen kann. Aber beispielsweise in Python ist es der o. g. Fall.
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • eigentlich gibt es in java kein call by referenz, da alle?? objekte immutable sind.

    hier hat normalerweise die PrevElement eine referenz auf Listenelement objekt, du erzeugst da keine neuen objekte, diese werden mit new erzeugt. und wenn du in getNextElement() ein neues objekt erzeugts dann kommt eben ein neues objekt zurück :)
    korregiert mich wenn ich falsch liege
    MfG ShureG

    There are 10 kinds of people. Those who understand binary notation, and those who do not.
  • Java nutzt immer Call by value, allerdings spielt das bei Objekten einer Klasse keine Rolle, da dort eine Referenz als Value zurückgegeben wird und man Veränderungen am selben Objetk vornimmt
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]