Hallo
Ich bin gerade am Versuche zu verstehen wie Referenzen in Java funktionieren, und je mehr ich darüber lese desto verwirrter bin ich.
Ich habe mir mal ein Minimalbeispiel:
So nun ist die Ausgabe
q.x = 5
q.x = 6
10
10
warum?
Ich hätte erwartet dass das Point-Object in der main-Funktion unverändert bleibt, also sowie bei Integer. Kann mir jemand erklären warum das so passiert?
Soweit ich weiss wird beim erzeugen eines Objects (zB q) eigentlich, unter der Haube einen Pointer definiert der auf den Speicherplatz zeigt. Also wie in C++
.
Das würde aber wiederrum heissen das nur der Wert (der Pointer) an die Funktion übergeben wird, also call-by-value...
Ich checks nicht!
Danke im voraus
Migu
Ich bin gerade am Versuche zu verstehen wie Referenzen in Java funktionieren, und je mehr ich darüber lese desto verwirrter bin ich.
Ich habe mir mal ein Minimalbeispiel:
Java:
import java.awt.Point;
public class Test {
public static void add(Point p) {
p.x++;
}
public static void add(Integer i) {
i++;
}
public static void main(String[] args) {
Point q = new Point(5, 5);
System.out.println("q.x = " + q.x);
add(q);
System.out.println("q.x = " + q.x);
Integer myInt = new Integer(10);
System.out.println(myInt.intValue());
add(myInt);
System.out.println(myInt.intValue());
}
}
So nun ist die Ausgabe
q.x = 5
q.x = 6
10
10
warum?
Ich hätte erwartet dass das Point-Object in der main-Funktion unverändert bleibt, also sowie bei Integer. Kann mir jemand erklären warum das so passiert?
Soweit ich weiss wird beim erzeugen eines Objects (zB q) eigentlich, unter der Haube einen Pointer definiert der auf den Speicherplatz zeigt. Also wie in C++
Code:
Point *q
Das würde aber wiederrum heissen das nur der Wert (der Pointer) an die Funktion übergeben wird, also call-by-value...
Ich checks nicht!
Danke im voraus
Migu