[Verständnisproblem] Array wird trotz void rückgabe verändert.

Luschi

Mitglied
Hey Leute,
Ich habe eine Frage bezüglich folgenden Codes:

Java:
public class Main {
     public static void main(String[] args){
       int[] gramm = {1,1,1,1};
       Berechnung test = new Berechnung();
    
       test.grammVeränderung(gramm);
    
       System.out.println(gramm[0]);
     }
}

public class Berechnung {
   public void grammVeränderung(int[] gramm){
   
     for(int i = 0; i<4; i++){
       gramm[i] = 2;
     }

  }
}

Ergebnis: 2

Wieso lässt sich das Array gramm verändern obwohl ich keinen Rückgabewert habe ? Wenn ich eine normale int Variable benutze wird diese doch auch nicht verändert. Was müsste ich verändern wenn das ergebnis trotzdem gramm = 1 lauten soll?

Ich weiß leider nicht wie ich danach suchen soll, da ich immer nur Einträge finde die ein Array als Rückgabewert haben wollen.

Vielen Dank schonmal falls ihr euch die Mühe macht und eine Antwort schreibt =)
 
Zuletzt bearbeitet von einem Moderator:
Ahh okay vielen Dank es ist mir jetzt klar geworden wieso sich der Wert verändert. Ich zeige also immer auf das selbe Objekt. Gibt es eine Möglichkeit das zu verhindern ? Also dass sich der Wert nicht ändert, oder ist das so nicht möglich?
 
Was willst du ueberhaupt mit dem Programm bezwecken? Wie du schon sagtest, das einzige was dein Programm jetzt gerade macht, ist dass es den Integer "2" mit jedem Element in deinem Array austauscht.
 
Ahh okay vielen Dank es ist mir jetzt klar geworden wieso sich der Wert verändert. Ich zeige also immer auf das selbe Objekt. Gibt es eine Möglichkeit das zu verhindern ? Also dass sich der Wert nicht ändert, oder ist das so nicht möglich?
Du könntest außerhalb das Array kopieren, und dann das kopierte Array übergeben.
"Automatisch" wüsste ich nicht wie man das hinbiegt.
 
Okay einfach das Array kopieren ... da hätte ich auch draufkommen müssen 🙂 Vielen Dank. @Nuiton das Programm soll nur zum Verständnis meiner Frage dienen. Hat sonst keinen Zweck ^^
 

Zurück
Oben