Kurze Verständnisfrage zu Java Point aus java.awt.*

Vivien

Mitglied
Hallo liebe Community,

ich habe eine Verständnisfrage bezüglich Java Point.
Ich habe folgenden Code:
[CODE lang="java" title="Java Point Beispiel"]import java.awt.*;

public class Aufgabe {

public static void main(String[] args) {
Point p1 = new Point(17, 9);
Point p2 = new Point(3, -1);
Point p3 = p2;
p1.translate(3, 1);
p2.x = 50;
p3.translate(-4, 5);
System.out.println("p1: " + p1 + " p2: " + p2 + " p3: " + p3);
}

}
[/CODE]

Folgenden Output habe ich erwartet:
p1= 20, 10 --> Output wie erwartet
p2= 50, -1 --> Output ist 46, 4
p3=46, 4 --> Output wie erwartet

Ich bin bei p2 etwas verwirrt. Im Grunde setze ich doch p3=p2, somit übernimmt p3 die Werte von p2. P2 sollte also doch vom p3.translate(-4, 5) unberührt bleiben? Allem anschein nach ist dies jedoch nicht der Fall. Meine Frage wäre warum ändern p3.translate(-4, 5) den Wert von p2.
Vielen Dank und entschuldigung falls dies eine blöde Frage ist.

Liebe Grüße und einen stressfreien Tag 🙂
 
Der Schlüssel des Problems liegt in Zeile 10 und 11.

In 10 weißt du p2 einen festen Wert zu. In 11 translatierst du p3, was effektiv p2 ist. Du führst die Translation also auf p3 UND p2 durch. Die Translation betrifft also sowohl p3 als auch p2. Points sind nicht immutable.

lg
 
Ach, super! Vielen, vielen Dank 🙂 ich habe schon an meinem gesunden Verstand gezweifelt. Das heißt bei Points arbeite ich dann immer mit Referenzen also. Dankeschön Ihr habt mir enorm weitergeholfen 🙂
 

Zurück
Oben