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++。