我知道java.lang.Long
和java.math.BigInteger
都可以容纳非常大的自然数。
我也知道Long的最大值,但是什么是BigInteger的最大值?
除了容量之外,当处理仍然落在Long范围内的一般大整数时,BigInteger是否会表现得更好?
唯一要考虑的是:我的值对Long来说是否太大了?
BigInteger能够保存比Long大得多的数。BigInteger似乎能够保存(2 ^ 32)^ Integer。MAX_VALUE,尽管这取决于实现(并且,即使在实现中真正无界,最终也会有物理资源限制),参见这里的解释。
Long
的取值范围为[-9,223,372,036,854,775,808,+9,223,372,036,854,775,807]。
Long会比BigInteger表现得更好,所以这实际上取决于你的值的大小。如果它们都低于Long的最大值,那么不使用Long是没有意义的。如果任何值大于Long max值,则必须使用BigInteger