Подтвердить что ты не робот

Почему Java BigInteger имеет TEN и ONE в качестве констант? Любое практическое использование?

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

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

Публикация была, вероятно, ошибкой. (API-интерфейс java полон "плохих" проектных решений)

Ответ 4

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

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

Edit:

например:.

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

TEN добавлено в версии 1.5 Кажется, он не используется внутри, а может быть, другим классом?

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

Ответ 5

10, 0 и 1 могут ответить почти на все. например, если вы хотите достигнуть 42, вы можете сделать (10 + 10 + 10 + 10 + 1 + 1):)