The BigInteger
class is used for mathematical operations involving large integers with magnitudes too large for primitive data types. For example 100-factorial is 158 digits - much larger than a long
can represent. BigInteger
provides analogues to all of Java's primitive integer operators, and all relevant methods from java.lang.Math
as well as few other operations.
BigInteger
is immutable. Therefore you can't change its state. For example, the following won't work as sum
won't be updated due to immutability.
BigInteger sum = BigInteger.ZERO;
for(int i = 1; i < 5000; i++) {
sum.add(BigInteger.valueOf(i));
}
Assign the result to the sum
variable to make it work.
sum = sum.add(BigInteger.valueOf(i));
The official documentation of BigInteger
states that BigInteger
implementations should support all integers between -22147483647 and 22147483647 (exclusive). This means BigInteger
s can have more than 2 billion bits!