2013-10-02 35 views
0

我不知道如何引用一個引用的對象的值。順便說一句,我不是在討論整數。如何創建一個交換可變類型的方法? (自然數)Java

我想做這個方法。

swapNN(NaturalNumber j, NaturalNumber n) 

我想要的jn引用被換,但我不明白怎麼能當我的方法的內幕交易,因爲有限的範圍進行。

另外我將如何做一個方法可變的NaturalNumber

是否這樣?

private static void square(NaturalNumber j) 
+1

你可以粘貼'NaturalNumber'類的結構 – Mohayemin

+0

選中這篇文章。 http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html – TheKojuEffect

回答

1

我想j的引用和正被換

你不能這樣做,在Java中,因爲它是通過按值。實現這一目標的一種方法是創建一個包裝類,該包裝類將兩個引用保存在兩個字段中並交換它們。

另外我將如何做一個方法,可變的NaturalNumber?

這一切都取決於如何實現NaturalNumber。與自身相乘。考慮使用BigInteger或其中一個較大的原語,以免發生溢出。

+0

@Thilo Ooops,在想方根。 –

0

您不能「交換」它們導致引用(j,n)按值傳遞 - 意味着「原始」引用不會改變。這就是說,如果NaturalNumber的內容是可變的(意思是,它的所有成員都沒有被聲明爲final),你可以通過將它們的內容「複製」到彼此中來解決它(使用第三個NaturalNumber對象,就像你在「交換」)。通過「交換內容」,您將具有與「交換」引用相同的效果。

+1

也許你會有同樣的效果。如果有其他參考指向您正在更新的對象,您也可能會得到令人討厭的副作用。那些人也會看到這些變化(這可能是也可能不是你想要的)。 – Thilo

+0

@Thilo - 我相信這就是你想要的,如果你試圖做「交換」的權利? ;) – alfasin

+0

如果Java有這樣的事情,那麼「傳遞引用」就不會做什麼。這隻會將兩個參數交換到該方法。沒有任何其他參考可能存在於程序中的其他地方。 – Thilo

相關問題