也许我真的很困惑,因为这似乎是一个非常简单的问题,但谷歌和官方文档还不够。
我想复制一个 BigInteger,但找不到干净的方法。BigInteger a = bwhenb是 BigInteger,因为 BigInteger 是一个对象,并且这里没有运算符重载,所以a引用相同的对象b
到目前为止我发现的最干净的方式是BigInteger a = b.add(BigInteger.ZERO),但对我来说仍然是一种肮脏的方式。
也许我真的很困惑,因为这似乎是一个非常简单的问题,但谷歌和官方文档还不够。
我想复制一个 BigInteger,但找不到干净的方法。BigInteger a = bwhenb是 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()
但如前所述,它是不可变的,所以应该没有必要。