46 votes

À quoi sert Java, long, double, byte, char?

Donc, je suis en train d'apprendre le java, et j'ai une question. Il semble que les types int, boolean et string sera bon pour à peu près tout ce dont je pourrais avoir besoin en termes de variables, à l'exception peut - float peut être utilisé lorsque les nombres décimaux sont nécessaires dans un certain nombre.

Ma question est, sont les autres types tels que long, double, byte, char etc jamais utilisé dans des conditions normales, tous les jours de la programmation? Quelles sont certaines de ces choses pourrait être utilisé pour? Que font-ils existent pour?

114voto

Neil Coffey Points 13408

Avec l'exception possible du "court", qui peut dire que c'est un peu du gaspillage de l'espace-parfois littéralement, ils sont tous des chevaux pour les cours:

  • Utiliser un int lorsque vous n'avez pas besoin des nombres fractionnaires et vous n'avez aucune raison d'utiliser autre chose; sur la plupart des processeurs/OS configurations, c'est la taille de la numéro de la machine peut traiter plus efficacement;
  • L'utilisation d'un double lorsque vous avez besoin des nombres fractionnaires et vous n'avez aucune raison d'utiliser autre chose;
  • Utiliser un char quand vous voulez pour représenter un caractère (ou peut-être les rares cas où vous avez besoin de deux octets non signée de l'arithmétique);
  • L'utilisation d'un octet si vous avez spécifiquement besoin de manipuler un signé octet (rare!), ou lorsque vous devez vous déplacer d'un bloc d'octets;
  • Utiliser un booléen lorsque vous avez besoin d'un simple "oui" ou " non " pavillon;
  • Utiliser un long pour ces occasions où vous avez besoin d'un nombre entier, mais où l'ampleur pourrait dépasser les 2 milliards de dollars (la taille des fichiers, des mesures de temps en millisecondes/nanosecondes, dans les usages avancés pour le compactage de plusieurs éléments de données dans un seul numéro);
  • Utiliser un float pour les rares cas où l'on soit (un) sont le stockage d'un grand nombre d'entre eux et de la mémoire de sauvegarde est intéressant, ou (b), effectuez un grand nombre de calculs, et peuvent se permettre de perdre en précision. Pour la plupart des applications, "float" offre de très mauvaise précision, mais les opérations peuvent être deux fois plus vite, il vaut la peine de tester ce sur votre processeur, de trouver que c'est effectivement le cas! [*]
  • L'utilisation d'un bref si vous avez vraiment besoin de 2 octets signée de l'arithmétique. Il n'y a pas beaucoup de cas...

[*] Par exemple, dans le Hotspot sur le Pentium architectures, float et double en général, les opérations prennent exactement la même époque, à l'exception de la division.

Ne soyez pas trop s'enliser dans l'utilisation de la mémoire de ces types, à moins que vous vraiment comprendre. Par exemple:

  • chaque taille de l'objet est arrondi à 16 octets en Hotspot, donc un objet avec un seul octet champ prendra précisément le même espace comme un objet unique avec un long ou double champ;
  • lors du passage de paramètres à une méthode, chaque type prend 4 ou 8 octets sur la pile: vous ne serez pas sauver quoi que ce soit par la modification d'un paramètre de méthode à partir de, disons, un int à un court! (J'ai vu des gens le faire...)

Évidemment, il y a certains appels de l'API (par exemple, les différents appels pour les non-UC tâches qui pour certaines raisons, de prendre des flotteurs) où vous avez juste à passer le type qu'il demande...!

Notez que la Chaîne n'est pas un type primitif, il n'a pas vraiment sa place dans cette liste.

19voto

Rolf Rander Points 1764

Java int de 32 bits, tandis qu'une longue est de 64 bits, lorsque vous avez besoin de représenter des nombres entiers supérieurs à 2^31, est la durée de votre ami. Pour un exemple typique de l'utilisation de longue, voir Système.currentTimeMillis()

Un octet de 8 bits, et le plus petit adressable entité sur la plupart du matériel moderne, de sorte qu'il est nécessaire lors de la lecture de données binaires à partir d'un fichier.

Un double a deux fois la taille d'un flotteur, de sorte que vous devez généralement utiliser un double plutôt que d'un flotteur, sauf si vous avez des restrictions sur la taille ou la vitesse et d'un flotteur dispose d'une capacité suffisante.

Un court-circuit est de deux octets, 16 bits. À mon avis, c'est le moins nécessaire le type de données, et je n'ai pas vraiment vu que dans le code, mais encore une fois, il pourrait être utile pour lire les formats de fichiers binaires ou faire des faible niveau des protocoles réseau. Par exemple ip, les numéros de port sont de 16 bits.

Char représente un caractère unique, qui est de 16 bits. C'est de la même taille comme un court, mais un court-circuit est signé (-32768 à 32767), tandis qu'un char est non signé (0 à 65535). (Cela signifie que l'ip numéro de port est probablement le plus correctement représenté comme un char que d'une courte, mais cela semble être en dehors du champ d'application prévu pour les caractères...)

Pour la vraiment de source faisant autorité sur ces détails, se la java language specification.

3voto

romaintaz Points 32120

Vous pouvez voir ici les types primitifs en Java.

L'intérêt principal entre ces types est l'utilisation de la mémoire. Par exemple, int utilise 32 bits tandis que l' octet utilise uniquement 8 bits .

Imaginez que vous travaillez sur de grandes structures (tableaux, matrices ...), alors vous ferez mieux de prendre soin du type que vous utilisez afin de réduire l'utilisation de la mémoire.

3voto

Ben Points 10335

Je pense qu'il y a plusieurs fins, à des types de ce genre:

1) Ils imposent des restrictions sur la taille (et signer) de variables qui peuvent être stockés.

2) Ils peuvent ajouter un peu de clarté dans le code (par exemple, si vous utilisez un char, alors tout le monde la lecture du code sait ce que vous prévoyez de stocker).

3) Ils peuvent économiser de la mémoire. si vous avez un grand tableau de nombres, qui seront tous unsigned et en-dessous de 256, vous pouvez le déclarer comme un tableau d'octets, l'enregistrement de la mémoire par rapport à si vous avez déclaré un tableau d'entiers.

4) Vous avez besoin de long si les chiffres que vous avez besoin de stocker plus de 2^32 et un double pour de très grands nombres en virgule flottante.

0voto

guerda Points 7417

Les types de données primitifs sont requis car ils sont à la base de chaque collection complexe.

long, double, byte etc. sont utilisés si vous n'avez besoin que d'un petit entier (ou autre), cela ne gaspille pas votre espace de tas.

Je sais, il y a assez de RAM à notre époque, mais vous ne devriez pas le gaspiller.

J'ai besoin des "petits" pour les opérations de base de données et de flux.

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