Pourquoi la classe BigInteger a-t-elle des constantes TEN et ONE? Des utilisations pratiques pour les avoir comme constantes? Je peux comprendre certains cas d'utilisation de ZERO.
Réponses
Trop de publicités? Supposons que vous ayez écrit une fonction qui renvoie BigInteger
après quelques calculs et opérations de base de données. Vous devrez souvent renvoyer des valeurs telles que null, 0, 1. Il est facile de renvoyer BigInteger.ZERO
. Ces valeurs sont publiques car elles sont couramment utilisées .
public BigInteger findMyLovelyBigInteger(Integer secretNumber) {
if (secretNumber == null) {
return BigInteger.ZERO; // better than BigInteger.valueOf(0);
} else {
// some db operations
}
}
De plus, BigInteger.TEN
est couramment utilisé pour les opérations d'alimentation / division / modification.
Checkout BigInteger
méthodes publiques. Vous verrez facilement leurs cas d'utilisation courants.
L'un est probablement le nombre le plus fondamental en mathématiques (à côté de zéro). Semble mériter sa propre constante sur ce seul. En pratique, c'est un nombre utile à avoir comme constante dans de nombreux algorithmes.
Dix est important dans le contexte BigInteger car il s'agit de la base du système de nombres décimaux. Ceci est important car plusieurs fonctions BigInteger nécessitent une base de base (par exemple, BigInteger.toString(int radix)
. C'est donc une constante assez utile à avoir.
IMHO qui était une décision de conception parce que 1 et 10 sont utilisés dans d'autres parties de la base de code de l'API Java. La création de Big * est une opération coûteuse et l'utilisation constante évite la création de nouveaux objets (les Big * sont immuables de toute façon) et le code est plus lisible.
Le reste de l'API n'a probablement pas besoin d'autres constantes.
Les rendre publics était probablement une faute. (L'API java est pleine de "mauvaises" décisions de conception)
Je ne sais pas en fait, mais peut-être:
- zéro: additif identité
- un: identité multiplicative
- dix: radix du système décimal
Peut-être qu'ils ont utilisé ces constans beaucoup en interne? (Je n'ai pas vérifié le code source, mais il est Open Source).
Edit:
E. g.:
Après avoir regardé le code, je pense que la raison est parce qu'ils utilisent ZÉRO et UN beaucoup en interne. Probablement pensé que d'autres personnes pourraient profiter de ces constantes aussi bien, étant donné les raisons ci-dessus. Ou peut-être utiliser ces constantes dans d'autres classes.
DIX a été ajouté dans v1.5 Il ne semble pas être utilisée en interne, mais peut-être par une autre classe?