Cha*_*ran 5 java arrays add biginteger
我是初学者.这可能是一个愚蠢的问题.
我有一大堆非常大的数字.我需要找到数组中所有这些数字的总和.我定义了一个BigInteger并将其初始化为零.现在我将遍历数组并将每个元素添加到此BigInteger.
BigInteger big = BigInteger.ZERO;
for(BigInteger b : array){
big.add(b);
}
Run Code Online (Sandbox Code Playgroud)
没有编译错误但big值仍然为零,代码不起作用.所以,我检查了一下并学习了BigInteger add方法返回的总和.我修改了上面的代码.
big = big.add(b);
Run Code Online (Sandbox Code Playgroud)
现在这很好用.
我的问题:那里到底发生了什么?为什么没有第一个代码更新big值.
我可以比较这BigInteger.add()与collection.add()
感谢更多的见解.谢谢.
为什么没有第一个代码更新大值.
BigInteger是不可变的,你不能更改它,只能更改一个String或任何原始包装器.
例如
String s = "Hello ";
s.concat("World"); // doesn't change anything.
s = s.concat("World"); // Updates 's'
Run Code Online (Sandbox Code Playgroud)
我可以将此BigInteger.add()与collection.add()进行比较吗?
集合是可变的,但这个标量值不是.
使用可变对象在很大程度上是一种性能让步.如果你有一个集合,每次它执行非常糟糕时需要一个完整的副本.