Почему класс BigInteger имеет постоянные TEN и ONE? Любое практическое использование для их использования в качестве констант? Я могу понять некоторые варианты использования для ZERO.
Почему Java BigInteger имеет TEN и ONE в качестве констант? Любое практическое использование?
Ответ 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
Я не знаю, но может быть:
- ноль: аддитивная идентификация
- one: мультипликативная идентичность
- ten: радиус десятичной системы
Может быть, они просто использовали эти постоянные внутри? (Я не проверял исходный код, но это Open Source).
Edit:
например:.
Посмотрев на код, я думаю, причина в том, что они используют ZERO и ONE много внутри. Вероятно, считалось, что другие могут извлечь выгоду из этих констант, а также с учетом вышеприведенных причин. Или, возможно, они используют эти константы и в некоторых других классах.
TEN добавлено в версии 1.5 Кажется, он не используется внутри, а может быть, другим классом?
Ответ 5
10, 0 и 1 могут ответить почти на все. например, если вы хотите достигнуть 42, вы можете сделать (10 + 10 + 10 + 10 + 1 + 1):)