Почему BigInteger Java имеет десять и один в качестве констант? Какая-нибудь практическая польза? [закрытый]


Почему класс BigInteger имеет константу десять и один? Любое практическое использование их в качестве константы? Я могу понять некоторые случаи использования для нуля.

5 56

5 ответов:

Допустим, вы написали функцию, которая возвращает BigInteger после некоторых вычислений и операций с БД. Вам часто может потребоваться вернуть такие значения, как 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 публичных методов. Вы легко увидите их общие случаи использования.

один вероятно, самое фундаментальное число в математике (наряду с нулем). Кажется, он заслужил свою собственную константу только на этом. Практически, это полезное число, чтобы иметь в качестве константы во многих алгоритмах.

десять важно в контексте BigInteger, потому что это основа десятичной системы счисления. Это важно, потому что несколько функций BigInteger нуждаются в базе radix (например,BigInteger.toString(int radix). Поэтому очень полезно постоянно иметь.

IMHO это было проектное решение, потому что 1 и 10 используются в других частях базы кода Java API. Создание Big* является дорогостоящей операцией и использование константы избегает создания нового объекта (Big* неизменяемы в любом случае), и код более читаем.

вероятно, другие константы не были нужны остальной части API.

обнародование их, вероятно, было ошибкой. (Java API полон "плохих" проектных решений)

Я не знаю на самом деле, но может быть:

может быть, они просто использовали эти константы много внутри? (Я не проверял исходный код, но он с открытым исходным кодом).

Edit:

например:

после просмотра кода я думаю, что причина в том, что они используют ноль и один много внутри. Вероятно, думал, что другие могут извлечь выгоду из этих констант, а также учитывая причины выше. Или, может быть, они используют эти константы в некоторых других классах.

десять было добавлено в 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) :)