Почему BigInteger Java имеет десять и один в качестве констант? Какая-нибудь практическая польза? [закрытый]
Почему класс BigInteger имеет константу десять и один? Любое практическое использование их в качестве константы? Я могу понять некоторые случаи использования для нуля.
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 Кажется, он не используется внутри, но, может быть, другим классом?