web-dev-qa-db-fra.com

Long vs BigInteger

Je comprends que les deux Java.lang.Long et Java.math.BigIntegerpeut contenir de très grands nombres naturels.

Je connais aussi la valeur maximale de Long, mais quelle est la valeur maximale pour BigInteger?

Et en dehors de la capacité, BigInteger aurait-il un meilleur rendement lorsque l'on travaille avec des entiers généralement grands qui restent dans la plage de Long?

Question

Est-ce la seule considération: ma valeur est-elle trop grande pour Long?

33
Fritz Duchardt

BigInteger est capable de contenir des nombres beaucoup plus grands que Long. BigInteger semble capable de contenir (2 ^ 32) ^ Integer.MAX_VALUE, bien que cela dépende de l'implémentation (et, même si vraiment illimité dans l'implémentation, il y aura éventuellement une limite de ressources physiques) Voir l'explication ici =.

La plage de Long est [-9,223,372,036,854,775,808, +9,223,372,036,854,775,807].

Long fonctionnera mieux que BigInteger, donc cela dépend vraiment de la taille de vos valeurs. S'ils tombaient tous sous la valeur maximale de Long, cela n'aurait aucun sens de ne pas utiliser Long. Si l'un d'entre eux est supérieur à la valeur Long max, vous devez utiliser BigInteger.

42
AHungerArtist