148 votes

Vs longs Integer, long vs int, ce qu’il faut utiliser et quand ?

Parfois, je vois à l’aide de API ou ou ou , et je ne peux pas comprendre comment la décision est faite pour ça ?

Quand devrais-je choisir quoi ?

203voto

Borealid Points 35075

Long est le Object forme d' long, et Integer est l'objet de la forme d' int.

L' long est de 64 bits. L' int est de 32 bits, et donc ne peut contenir que des nombres jusqu'à +-2 milliards d'euros (-2^31 à +2^31-1).

Vous devez utiliser long et int sauf si vous avez besoin de faire usage de méthodes héritées de Object, comme hashcode. java.util.collections méthodes généralement utiliser la boîte (Object-emballés) versions parce qu'ils ont besoin de travailler pour n'importe quel Object, et un type primitif comme int ou long n'est pas un Object.

Une autre différence est que l' long et int sont passé par valeur, alors que Long et Integer sont des passe-par-valeur de référence, comme tous les non-primitif types Java. Donc si il était possible de modifier un Long ou Integer (il ne l'est pas, ils sont immuables, sans utiliser JNI code), il y aurait une autre raison d'utiliser l'un sur l'autre.

Une dernière différence est qu'un Long ou Integer pourrait être null.

30voto

Michael Borgwardt Points 181658

Il y a quelques choses que vous ne pouvez pas faire avec un type primitif :

  • Avoir une `` valeur
  • synchroniser sur eux
  • Utiliser comme paramètre pour une classe générique de type et qui en matière :
  • Passer à une API qui fonctionne avec `` s

Sauf si vous avez besoin un de ceux, vous devez préférer les types primitifs, car ils nécessitent moins de mémoire.

27voto

Joachim Sauer Points 133411
<ul> <li>Par défaut, utilisez un <code></code> , en tenant des nombres.</li> <li>Si la plage de <code></code> est trop petit, utilisez un<code></code></li> <li>Si la plage de <code></code> est trop petit, utilisez<code></code></li> <li>Si vous avez besoin gérer vos numéros comme objet (par exemple lors de leur mise en un <code></code> , la manutention <code></code> ,...) Utilisez <code></code> / <code></code> au lieu de cela</li> </ul>

13voto

Jesper Points 65733

Un int est un entier de 32 bits; un long est un entier de 64 bits. À utiliser dépend de la taille de l'numéros sont que vous allez travailler avec.

int et long sont des types primitifs, tandis que d' Integer et Long sont des objets. Les types primitifs sont plus efficaces, mais parfois vous avez besoin d'utiliser des objets; par exemple, Java classes de collection ne peut travailler qu'avec des objets, donc si vous avez besoin d'une liste d'entiers vous avez à faire un List<Integer>, par exemple (vous ne pouvez pas utiliser int en List directement).

1voto

Houcem Berrayana Points 1569

Quand il vient à l'aide d'un très grand nombre qui peut dépasser 32 bits pour représenter, vous pouvez l'utiliser longtemps pour s'assurer que vous n'aurez pas strenge comportement.

À partir de Java 5, vous pouvez utiliser des en-boxing et de boxe fonctionnalités pour rendre l'utilisation de l'int Entier et tout à fait la même. Cela signifie que vous pouvez faire : int myInt = new Integer(11); Entier myInt2 = myInt;

La dans et hors de boxe vous permettent de basculer entre int et Entier, sans aucune conversion (même fot de Long,Double,Court aussi)

Vous pouvez utiliser des int de tous les temps, mais Entier contient des méthodes d'assistance qui peuvent vous aider à faire certaines opérations complexes avec des entiers (comme Entier.parseInt(String) )

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