0
所以我有一個代表二維形狀的一維布爾數組。它是從0-8編號,較該指數一個3x3正方形:Java數組通過引用而不是值
012
345
678
我用下面的代碼寫一個函數形狀順時針旋轉:
newShape[2]=oldShape[0];
newShape[5]=oldShape[1];
newShape[8]=oldShape[2];
newShape[1]=oldShape[3];
newShape[4]=oldShape[4];
newShape[7]=oldShape[5];
newShape[0]=oldShape[6];
newShape[3]=oldShape[7];
newShape[6]=oldShape[8];
現在,當的輸入功能:
false-true-false
true--true-false
false-false-false
預期輸出是:
false-true-false
false-true--true
false-false-false
但是,我反而得到:
false-true-false
true--true--true
false-true-false
這不僅是newShape
的結果,但也的的oldShape
結果,儘管我從來沒有改變oldShape
。似乎這些作業是圍繞着變量的引用而改變的,而不是它們的實際值。我怎樣才能解決這個問題?
'newShape'是如何聲明的? 「oldShape」如何聲明?你在通過什麼方式進出你的方法?給你的問題添加一些實際的代碼會使它更清晰。理想情況下,您甚至可以包含[MCVE](http://stackoverflow.com/help/mcve)。 – azurefrog
如果'newShape'和'oldShape'數組引用指向相同的數組,那麼爲'newShape'中的數組元素賦值將仍然覆蓋'oldShape'數組元素,因爲它們本質上是引用相同的數組。 –