Java 我无法理解矩形结构中x和y值的变化

Java 我无法理解矩形结构中x和y值的变化,java,eclipse,Java,Eclipse,我的输出是java.awt.Rectangle[x=40,y=55,width=20,height=30] 我不理解在中间发生的计算方法。 { Rectangle rect1 = new Rectangle (10,5,20,30); Rectangle rect2 = rect1; rect1.translate(20, 30); rect2.translate(10,20); System.out.println(rect1); } 该方法只需将矩

我的输出是
java.awt.Rectangle[x=40,y=55,width=20,height=30]

我不理解在中间发生的计算方法。
{
    Rectangle rect1 = new Rectangle (10,5,20,30);

    Rectangle rect2 = rect1;
    rect1.translate(20, 30);
    rect2.translate(10,20);
    System.out.println(rect1);
}
该方法只需将矩形移动指定的X和Y距离,而不改变其大小

因此,最终的X坐标为10(起点)+20(第一次
translate
call)+10(第二次
translate
call)=40。
类似地,最终的Y坐标为5(起点)+30(第一次
translate
call)+20(第二次
translate
call)=55。
宽度和高度保持不变。

很容易:

10 + 20 + 10 = 40
5 + 30 + 20  = 55
20 + nothing = 20
30 + nothing = 30

看看java文档中的translate是如何工作的,这是因为您只处理一个矩形实例。即使在两个不同的变量(rect1和rect2)上调用translate,这些变量仍然引用同一个矩形,因为您设置了rect2=rect1


如果您想要两个不同的矩形,您必须手动实例化另一个。

因此,基于,
translate
基本上将矩形的x/y位置偏移指定的量。因此,根据您的示例,x位置是
10+20+10
,即
40
。在任何人告诉我有两个矩形之前,请记住,
rect2
rect1
都指向同一个对象请记住-Java中的所有对象变量都是引用变量。这不是C++。