Program Tip

Java의 BigInteger에 TEN과 ONE이 상수로있는 이유는 무엇입니까?

programtip 2020. 12. 12. 12:17
반응형

Java의 BigInteger에 TEN과 ONE이 상수로있는 이유는 무엇입니까? 실용적인 용도?


BigInteger 클래스에 상수 TEN과 ONE이있는 이유는 무엇입니까? 그것들을 상수로 사용하는 실용적인 용도는 무엇입니까? ZERO의 일부 사용 사례를 이해할 수 있습니다.


BigInteger계산과 db 연산 후에 반환되는 함수를 작성했다고 가정 해 보겠습니다 . 종종 null, 0, 1과 같은 값을 반환해야 할 수 있습니다 BigInteger.ZERO.를 쉽게 반환 할 수 있습니다. 이 값은 일반적으로 필요하므로 공개 됩니다.

public BigInteger findMyLovelyBigInteger(Integer secretNumber) {
    if (secretNumber == null) {
        return BigInteger.ZERO; // better than BigInteger.valueOf(0);
    } else {
        // some db operations
    }
}

또한 BigInteger.TEN일반적으로 power / divide / mod 작업에 사용됩니다.

BigInteger공개 방법을 체크 아웃 합니다. 일반적인 사용 사례를 쉽게 볼 수 있습니다.


1 은 아마도 수학에서 가장 기본적인 숫자 일 것입니다 (0과 함께). 그것만으로도 그 자체의 상수를받을 자격이있는 것 같습니다. 실제로 많은 알고리즘에서 상수로 사용하는 것이 유용한 숫자입니다.

1010 진수 시스템의 밑이기 때문에 BigInteger 컨텍스트에서 중요합니다. 이것은 여러 BigInteger 함수가 기수를 필요로하기 때문에 중요합니다 (예 : BigInteger.toString(int radix). 따라서 매우 유용한 상수입니다.


IMHO는 1과 10이 Java API 코드베이스의 다른 부분에서 사용되기 때문에 설계 결정이었습니다. Big *을 생성하는 것은 비용이 많이 드는 작업이며 상수를 사용하여 새로운 객체 생성을 피하고 (Big *는 어쨌든 불변) 코드를 더 읽기 쉽습니다.

아마도 나머지 API에는 다른 상수가 필요하지 않았을 것입니다.

그들을 공개하는 것은 아마도 잘못 일 것입니다. (Java API는 "나쁜"디자인 결정으로 가득 차 있습니다)


실제로는 모르지만 아마도 :

아마도 그들은 내부적으로이 constans를 많이 사용했을까요? (나는 소스 코드를 확인하지 않았지만 오픈 소스입니다).

편집하다:

예 :

코드를 살펴본 이유는 내부적으로 ZERO와 ONE을 많이 사용하기 때문이라고 생각합니다. 아마도 위의 이유를 고려할 때 다른 사람들이 이러한 상수로부터 이익을 얻을 수 있다고 생각했을 것입니다. 또는 다른 클래스에서도 이러한 상수를 사용합니다.

TEN은 v1.5에 추가되었습니다. 내부적으로 사용되지 않는 것 같지만 다른 클래스에서 사용할 수 있습니까?

http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/00cd9dc3c2b5/src/share/classes/java/math/BigInteger.java


10, 0, 1은 거의 모든 것에 답할 수 있습니다. 예를 들어 42에 도착하고 싶다면 (10 + 10 + 10 + 10 + 1 + 1) :)

참고 URL : https://stackoverflow.com/questions/17544151/why-does-javas-biginteger-have-ten-and-one-as-constants-any-practical-use

반응형