Werden in Java Parameter als Referenz oder als Wert übergeben?
Hallo zusammen! Ich habe gerade angefangen, Java zu lernen, und bin auf ein Verständnisproblem gestoßen. In den Büchern steht, dass in Java alles als Wert übergeben wird, aber in der Praxis sehe ich etwas Seltsames.
Hier ist ein Beispiel. Wenn ich ein Objekt (z.B. eine Liste) an eine Methode übergebe und es innerhalb der Methode ändere, bleiben die Änderungen auch nach dem Verlassen der Methode erhalten:
```java
public class Test {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
changeString(sb);
System.out.println(sb); // Ausgabe: Hello World
}
public static void changeString(StringBuilder s) {
s.append(" World");
}
}
```
Hier hat sich sb geändert. Ich dachte, wenn eine Kopie übergeben wird, sollten die Änderungen lokal bleiben. Heißt das, dass Objekte als Referenz übergeben werden?
Aber wenn ich versuche, innerhalb der Methode ein neues Objekt zuzuweisen, wirkt sich das außerhalb nicht aus:
```java
public class Test {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");