也許我很困惑,因爲這似乎是一個非常簡單的問題,但Google和官方文檔還不夠。BigInteger複製
我想複製一個BigInteger,我找不到乾淨的方式。 BigInteger a = b
當b
是一個BigInteger,因爲BigInteger的是一個對象,而且也沒有運營商這裏超載,a
引用相同的對象b
我發現迄今BigInteger a = b.add(BigInteger.ZERO)
最乾淨的方式,但對我來說還是一個骯髒的方式。
也許我很困惑,因爲這似乎是一個非常簡單的問題,但Google和官方文檔還不夠。BigInteger複製
我想複製一個BigInteger,我找不到乾淨的方式。 BigInteger a = b
當b
是一個BigInteger,因爲BigInteger的是一個對象,而且也沒有運營商這裏超載,a
引用相同的對象b
我發現迄今BigInteger a = b.add(BigInteger.ZERO)
最乾淨的方式,但對我來說還是一個骯髒的方式。
BigInteger
是不可變的像其他包裝類如Integer
和String
。所以不要擔心可能的改動/篡改。
P.S:作爲獎勵,這裏有一個關於什麼時候需要防禦性複製的鏈接。
BigInteger first = new BigInteger("15");
BigInteger second = new BigInteger(first.toString());
雖然這是可能的,BigInteger
對象是immutable,我不能想象一個需要複製。
BigInteger
是不可變的 - 不應該有任何需要複製BigInteger
。
如何:
BigInteger a = b.clone()
但是如前所述它是不可變的,所以應該沒有必要。
首先,您不應該複製BigInteger
,因爲它是不可變的類。 (複製BigInteger
大約是複製String
有用...)
但是,如果你需要複製一個,再一個更有效的方式做到這將是這樣的:
BigInteger first = new BigInteger(42);
BigInteger second = first.add(BigInteger.ZERO);
這避免(相對)昂貴的二進制 - >十進制 - >二進制轉換以及創建中間字符串。
而且BigInteger.clone()
應該是更有效的還是......
'BigInteger a = new BigInteger(b)'? – Jon
'BigInteger'是不可變的。需要複印的任何具體原因? –
它是不可變的,爲什麼你需要一個副本? – Adam