59 votes

Pourquoi les commandes BigInteger de Java ont-elles TEN et ONE comme constantes? Toute utilisation pratique?

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.

51voto

Mustafa Genç Points 1815

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.

21voto

mikera Points 63056

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.

11voto

PeterMmm Points 11099

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)

5voto

Puce Points 13540

Je ne sais pas en fait, mais peut-être:

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?

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

-2voto

user2563908 Points 31

10, 0 et 1 peuvent répondre à presque tout. par exemple si vous voulez arriver à 42, vous pouvez faire un (10 + 10 + 10 + 10 + 1 + 1) :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X