BigInteger
, found in the java.math
package, is a class for representing integers of arbitrary size and precision. Unlike primitive types (int
, long
), which have fixed-size limits, BigInteger
can represent values with virtually unlimited digits, constrained only by system memory.
Importance:
- Arbitrary Precision: Can handle extremely large integers (e.g., hundreds or thousands of digits).
- Immutable: Every operation returns a new
BigInteger
; original value remains unchanged. - Full Arithmetic Support: Addition, subtraction, multiplication, division, modular arithmetic, etc.
- Bitwise Operations: Supports shifts and logical operations (AND, OR, XOR).
- Advanced Math: Includes methods like
gcd()
,isProbablePrime()
,modPow()
,modInverse()
.
When to Use:
- Calculations beyond the range of
long
(±9.22×10¹⁸) - Cryptography, factorials, scientific simulations
- Precise integer math without overflow
Limitations:
- Slower than primitives due to object overhead
- Higher memory usage
- Cannot use
+
,-
,*
,/
operators—must use method calls (add()
,multiply()
, etc.)
Use BigInteger
when you need large, precise integers that primitive types cannot handle. It is vital for applications requiring exact and scalable integer arithmetic.