也许我真的很困惑,因为这似乎是一个非常简单的问题,但谷歌和官方文档还不够。
我想复制一个 BigInteger,但找不到干净的方法。BigInteger a = b
whenb
是 BigInteger,因为 BigInteger 是一个对象,并且这里没有运算符重载,所以a
引用相同的对象b
到目前为止我发现的最干净的方式是BigInteger a = b.add(BigInteger.ZERO)
,但对我来说仍然是一种肮脏的方式。
也许我真的很困惑,因为这似乎是一个非常简单的问题,但谷歌和官方文档还不够。
我想复制一个 BigInteger,但找不到干净的方法。BigInteger a = b
whenb
是 BigInteger,因为 BigInteger 是一个对象,并且这里没有运算符重载,所以a
引用相同的对象b
到目前为止我发现的最干净的方式是BigInteger a = b.add(BigInteger.ZERO)
,但对我来说仍然是一种肮脏的方式。
BigInteger
是不可变的——永远不需要复制BigInteger
.
BigInteger
与其他包装类(例如Integer
和)一样是不可变的String
。所以不用担心可能的更改/篡改。
PS:作为奖励,这里有一个关于何时需要防御性复制的链接。
BigInteger first = new BigInteger("15");
BigInteger second = new BigInteger(first.toString());
虽然这是可能的,但BigInteger
对象是不可变的,我无法想象需要复制。
首先,您不需要复制 aBigInteger
因为它是不可变的类。(复制 a与复制 a ...BigInteger
一样有用)String
但是,如果您确实需要复制一个,那么一种更有效的方法是:
BigInteger first = new BigInteger(42);
BigInteger second = first.add(BigInteger.ZERO);
这避免了(相对)昂贵的二进制 -> 十进制 -> 二进制转换和中间字符串的创建。
而且BigInteger.clone()
应该更有效率...
怎么样:
BigInteger a = b.clone()
但如前所述,它是不可变的,所以应该没有必要。