2013-01-08 21 views
8

也許我很困惑,因爲這似乎是一個非常簡單的問題,但Google和官方文檔還不夠。BigInteger複製

我想複製一個BigInteger,我找不到乾淨的方式。 BigInteger a = bb是一個BigInteger,因爲BigInteger的是一個對象,而且也沒有運營商這裏超載,a引用相同的對象b

我發現迄今BigInteger a = b.add(BigInteger.ZERO)最乾淨的方式,但對我來說還是一個骯髒的方式。

+1

'BigInteger a = new BigInteger(b)'? – Jon

+7

'BigInteger'是不可變的。需要複印的任何具體原因? –

+0

它是不可變的,爲什麼你需要一個副本? – Adam

回答

6

您可以使用BigInteger(String val)

BigInteger first = new BigInteger("15"); 
BigInteger second = new BigInteger(first.toString()); 

雖然這是可能的,BigInteger對象是immutable,我不能想象一個需要複製。

14

BigInteger是不可變的 - 不應該有任何需要複製BigInteger

1

如何:

BigInteger a = b.clone() 

但是如前所述它是不可變的,所以應該沒有必要。

3

首先,您不應該複製BigInteger,因爲它是不可變的類。 (複製BigInteger大約是複製String有用...)

但是,如果你需要複製一個,再一個更有效的方式做到這將是這樣的:

BigInteger first = new BigInteger(42); 
BigInteger second = first.add(BigInteger.ZERO); 

這避免(相對)昂貴的二進制 - >十進制 - >二進制轉換以及創建中間字符串。

而且BigInteger.clone()應該是更有效的還是......