Blaubart: Array an methode übergeben

Beitrag lesen

Tach.

Ich habe auch gerade gelernt, dass ich ein Array an eine Methode übergeben kann und die Methode, sollte sie tatsächlich etwas verändern, das Original verändert. Das ist doch Mist.

Eigentlich ist diese Art der Parameterübergabe gar nicht so dumm. Wenn lediglich der Zeiger auf den Parameter übergeben wird, muß nicht bei jedem Methodenaufruf "im Hintergrund" eine Kopie des Parameters erstellt werden. In Falle eines großen Arrays beispielsweise ein ziemlicher Gewinn. Java sagt statt dessen: Wenn du *wirklich* eine Kopie in der Methode brauchst, erstell sie dir selber.

Wie verhindere ich denn dann das Manipulieren an Originalen?

Indem du mit einer Kopie des Originals arbeitest.

Bei Strings und einfachen Datentypen macht java das nicht.

Richtig, die primitiven Typen werden "by value" übergeben. [1] Der Performancegewinn (s. o.) ist hier kein Argument für "call by reference", und außerdem ist das Arbeiten mit Kopien solcher Variablen in den Methoden wohl auch die häufigere und intuitivere Variante.

[1] String müßte man hier eigentlich als Sonderform rausnehmen. Bei der Parameterübergabe teilt es aber das Verhalten der Primitiven.

--
Once is a mistake, twice is jazz.