티스토리 뷰

Java

[Java] BigInteger

snail voyager 2025. 4. 19. 18:47
728x90
반응형

 

  • 무한대 크기 지원: long 범위(±9경)를 넘는 정수도 표현 가능
  • 이론적으로 메모리가 허용하는 한 무한대에 가까운 숫자까지 표현
  • 불변 객체(Immutable): 기존 값을 바꾸지 않고 항상 새로운 객체를 반환
  • 정수 연산 지원: 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지, 거듭제곱, GCD 등 다양한 연산 지원
  • java.math 패키지에 포함
import java.math.BigInteger;

public class Main {
    public static void main(String[] args) {
        BigInteger big1 = new BigInteger("9223372036854775808"); // long 범위 넘어선 수
        BigInteger big2 = new BigInteger("100000000000000000000");

        // 덧셈
        BigInteger sum = big1.add(big2);

        // 곱셈
        BigInteger product = big1.multiply(big2);

        System.out.println("합계: " + sum);
        System.out.println("곱: " + product);
    }
}

 

자주 사용하는 메서드

add() 덧셈
subtract() 뺄셈
multiply() 곱셈
divide() 나눗셈 (몫)
mod() 나머지
pow(n) 거듭제곱
gcd() 최대공약수
compareTo() 크기 비교
equals() 값 비교
isProbablePrime(certainty) 소수 판별

 

  • BigInteger는 연산할 때 기존 객체를 수정하지 않고 항상 새로운 객체를 반환
  • 숫자를 문자열로 넣어야 하므로 "1000000"처럼 문자열 형태로 생성해야 함
  • 기본 연산자(+, -, * 등)는 사용할 수 없고, 메서드로 처리해야 함

 

 

728x90
반응형

'Java' 카테고리의 다른 글

[Java] Jackson readValue(), convertValue()  (0) 2025.04.20
[Java] Jackson Streaming API, TreeModel  (0) 2025.04.19
[Java] BigDecimal  (0) 2025.04.19
[Java] DIP (Dependency Inversion Principle)  (0) 2025.03.03
[Java] Bounded WildCard  (1) 2025.03.03
반응형
300x250