BigInteger는 자바에서 아주 큰 정수를 다루기 위한 클래스이다. 일반적인 정수 자료형이 표현할 수 있는 범위를 넘어 값을 저장하고 계산할 수 있도록 설계되었다.
자바의 일반 정수 타입은 표현 가능한 범위가 정해져 있다.
| 타입 | 최대 범위 |
|---|---|
| int | 약 ±21억 |
| long | 약 ±9 × 10¹⁸ |
하지만 계산 과정에서 더 큰 수가 필요할 때가 있다. 이때 최대 범위는 넘어가게 되면 오버플로가 발생해 잘못된 숫자가 저장되기에 제한없이 큰 정수를 다룰 수 있는 BigInteger와 같은 클래스를 사용하는 것이다.
new로 생성BigDecimal 사용BigInteger a = new BigInteger("123456789123456789");
BigInteger b = BigInteger.valueOf(100);
BigInteger c = a.add(b);
BigInteger c = a.subtract(b);
BigInteger c = a.multiply(b);
BigInteger c = BigInteger.valueOf(2).pow(100);
a.compareTo(b);
String str = a.toString();
+. -, *, / 와 같은 연산자는 기본 자료형에만 적용되는 연산자이기 때문에 BigInteger는 메서드 방식으로 계산해야 한다.
| 연산 | BigInteger 메서드 |
|---|---|
| + | add() |
| - | subtract() |
| * | multiply() |
| / | divide() |
| % | mod() |