2017-05-20 19 views
1

這是我的問題。我無法理解矩形結構中x和y值的變化

{ 
    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]
我不明白,發生在中間的計算方法。

+2

因此,基於[JavaDocs](https://docs.oracle.com/javase/8/docs/api/java/awt/Rectangle.html#translate-int-int-),「translate」基本上按指定的量偏移矩形的x/y位置。所以,根據你的例子,x的位置是'10 + 20 + 10',它是'40'。在任何人告訴我有兩個矩形之前,請記住,'rect2'和'rect1'都指向同一個對象 – MadProgrammer

+2

請記住 - Java中的所有對象變量都是引用變量。這不是C++。 –

回答

0

translate(int, int)方法只是將矩形移動指定的X和Y距離,而不更改其大小。

所以最終的X座標將是10(起點)+ 20(第一translate呼叫)+ 10(第二translate呼叫)= 40。
類似地,最後的Y座標將是5(起點)+ 30 (第一個translate致電)+20(第二個致電translate)= 55.
寬度和高度保持不變。

0

這是很容易:

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

參加Java文檔看看如何轉化工作Rectangle::translate

1

這是因爲你只處理一個單一的矩形實例。即使你在兩個不同的變量(rect1和rect2)上調用翻譯,那些變量仍會引用相同的Rectangle,因爲您設置了rect2 = rect1。

如果你想要兩個不同的矩形,你必須手動實例化另一個矩形。