Methoden void-Methode: Wieso gibt es eine Rückgabe?

Showd0wn

Mitglied
Hallo,

ich habe folgendes kleines Programm:

Java:
public class Test {
    public static void main(String[] args){
    double [] d = {4,2,3};
    y (d);
    for(int i=0;i<=2;i++){
        System . out . println (d[i]);
    }
 }

 public static void y ( double [] d) {
    for ( int i = 0; i < d. length ; i ++) {
        d[i]=d[i]*5;
    }
 }

}

Die Ausgabe ist:
20.0
10.0
15.0

Wieso werden die veränderten Werte aus der y-Methode benutzt. Soweit ich das gelernt habe, ist das eine void Methode, d.h. es wird nichts zurückgegeben.

Mein Logik:
1. Array wird angelegt
2. y-Methode wird mit dem d Array aufgerufen
3. Arraywerte werden mit 5 multipliziert --> Ende der Methode --> keine Rückgabe, nichts
4. d wird ganz normal mit den Startwerten ausgegeben, da die y-Methode nichts zurückgeben hat

Für mich hätte es Sinn gemacht, wenn ich eine return in der y-Methode hätte & dann eben kein void mehr sondern double[] und danach dann die Ausgabe hätte.


Gruß
 
Zuletzt bearbeitet:
Du übergibst ein Objekt. Das veränderst du in der Methode. Die Referenz auf dieses Objekt ist aber immer noch in d gespeichert. Du brauchst nichts zurück geben, wenn du auch ein übergebenes Objekt verändern kannst.
 
Naja, wenn das Array ein Paramter ist...
Du kannst dir merken: bei Objekten werden nur Referenzen übergeben und nicht das Objekt. Folglich ist jeder Zugriff auf eine übergebene Referenz auch ein Zugriff auf das Objekt selbst, welches dann ggf. verändert wird.
Bei primitiven Datentypen wird der Wert übergeben. Jeder Zugriff auf einen übergenen solchen Datentyp ist ein Zugriff auf eine andere Variable und hat mit der Ursprungsvariable nichts zu tun.
 
Anders ausgedrückt:

Alles, für das [c]Object o = ???[/c] kompiliert, wird per Referenz übergeben, d.h. du kannst es in der Methode verändern und man merkt es draußen.
Für alles andere (die 8 primitiven Datentypen) wird der Wert übergeben, das heißt er bleibt außerhalb der Methode erhalten, wenn du ihn in der Methode änderst.
 
Zuletzt bearbeitet:

Zurück
Oben