OOP Array wird ohne grund sortiert?!

Agassiz

Mitglied
Hi,

habe hier ne ganz komische Sache am laufen.
Und zwar habe ich ein Array.
Dieses ist nicht sortiert.
Dann wird folgende Methode aufgerufen (liegt in einer anderen Klasse):
Java:
public int[] distribution(float[] array, int counter) {

        float[] binned = array;

        [....]

        Arrays.sort(binned); 

        [....]
}
Jedoch wird das array was übergeben wurde ebenfalls soriert. Warum?

Ich habe mir das übergebene Array Vor und Nach dem Methodenaufruf ausgeben lassen.

Davor : Unsortiert.
Danach : Sortiert.


Ich rühre das übergebene Array gar nicht an. Es wird ein neues Array erstellt und das übergebene wird kopiert.
Aber warum habe ich diese komische/ungewollte ausgabe?
 
An dieser Stelle:

Code:
float[] binned = array;

Wird die Speicheradresse des alten Arrays an den neuen Übergeben, das heißt, dass beide Variablennamen auf die selbe Speicheradresse zugreifen. Wenn Du das übergebene Array unsortiert lassen möchtest, dann musst Du für den neuen Array eine eigene Speicheradresse anlegen und ihn anschließend übergeben:

Java:
float[] binned = new float[array.length];
for(int i = 0; i < binned.length; i++){
binned[i] = array[i]
}
Gruß,

Einser
 

Zurück
Oben