Question

Donc, j'apprends le java et j'ai une question. Il semble que les types int, boolean et string conviendront à peu près à tout ce dont j'aurai besoin en termes de variables, à l'exception peut-être que float pourrait être utilisé lorsque des nombres décimaux sont nécessaires.

Ma question est la suivante: les autres types tels que long, double, byte, char etc. ont-ils déjà été utilisés dans une programmation normale, quotidienne? Quelles sont les choses pratiques pour lesquelles ils pourraient être utilisés? Pourquoi existent-ils?

Était-ce utile?

La solution

À l'exception peut-être de & "Short &" ;, ce qui est sans doute un peu une perte de place - parfois, littéralement, ils sont tous des chevaux pour des cours:

  • Utilisez un int lorsque vous n'avez pas besoin de nombres fractionnaires et que vous n'avez aucune raison d'utiliser autre chose. sur la plupart des configurations de processeurs / systèmes d'exploitation, il s'agit de la taille du nombre que la machine peut traiter le plus efficacement;
  • Utilisez un double lorsque vous avez besoin de nombres fractionnaires et que vous n'avez aucune raison d'utiliser autre chose.
  • Utilisez un caractère lorsque vous souhaitez représenter un caractère (ou éventuellement dans de rares cas où vous avez besoin d'une arithmétique non signée sur deux octets);
  • Utilisez un octet si vous devez spécifiquement manipuler un octet signé (rare!) ou si vous devez vous déplacer dans un bloc . d'octets;
  • Utilisez un booléen lorsque vous avez besoin d'un simple & "oui / non &"; drapeau;
  • Utilisez long pour les occasions où vous avez besoin d'un nombre entier, mais dont la magnitude peut dépasser 2 milliards (tailles de fichier, mesures de temps en millisecondes / nanosecondes, pour les utilisations avancées de compactage de plusieurs fichiers). données en un seul numéro);
  • Utilisez un float pour les rares cas où vous (a) en stockez un nombre énorme et que la mémoire en vaut la peine, ou (b) effectuez un nombre massif de calculs et peut permettre une perte de précision. Pour la plupart des applications, & Quot; float & Quot; offre une précision très médiocre, mais les opérations peuvent être deux fois plus rapides - cela vaut la peine de tester cela sur votre processeur, cependant, pour constater que c'est bien le cas! [*]
  • Utilisez un court si vous avez vraiment besoin d'arithmétique signée sur 2 octets. Il n'y a pas tellement de cas ...

[*] Par exemple, dans les architectures Hotspot sur Pentium, les opérations en général sont redondantes et doubles. prendre exactement le même temps , sauf pour la division.

Ne vous embourbez pas dans la mémoire utilisée par ces types, sauf si vous comprenez vraiment . Par exemple:

  • chaque taille d'objet est arrondie à 16 octets dans Hotspot. Ainsi, un objet avec un champ à un octet occupera exactement le même espace qu'un objet simple avec un champ long ou double;
  • lors du passage de paramètres à une méthode, chaque type occupe 4 ou 8 octets sur la pile : vous ne sauvegarderez rien en modifiant un paramètre de méthode, par exemple d'un int à un court! (J'ai vu des gens faire ça ...)

Évidemment, il existe certains appels d'API (par exemple, divers appels pour des tâches non gourmandes en ressources processeur qui prennent des flottants pour une raison quelconque) et pour lesquels il vous suffit de transmettre le type demandé ...!

Notez que String n'est pas un type primitif, il n'appartient donc pas vraiment à cette liste.

Autres conseils

Un java int a 32 bits, tandis qu'un long a 64 bits. Par conséquent, lorsque vous devez représenter des entiers supérieurs à 2 ^ 31, votre ami est long. Pour un exemple typique d'utilisation de long, consultez System.currentTimeMillis ()

.

Un octet fait 8 bits et constitue la plus petite entité adressable sur la plupart des matériels modernes. Il est donc nécessaire lors de la lecture de données binaires à partir d'un fichier.

Un double a deux fois la taille d'un float, vous utiliserez donc généralement un double plutôt qu'un float, sauf si vous avez des restrictions de taille ou de vitesse et si un float a une capacité suffisante.

Un court est deux octets, 16 bits. À mon avis, il s'agit du type de données le moins nécessaire, et je ne l'ai pas vraiment vu dans le code réel, mais encore une fois, cela pourrait être utile pour la lecture de formats de fichiers binaires ou la création de protocoles réseau de bas niveau. Par exemple, les numéros de port IP sont au format 16 bits.

Char représente un seul caractère, qui est de 16 bits. Sa taille est identique à celle d'un court, mais un court est signé (-32768 à 32767), tandis qu'un caractère est non signé (0 à 65535). (Cela signifie qu'un numéro de port IP est probablement plus correctement représenté par un caractère qu'un caractère court, mais cela semble être en dehors de la portée prévue pour les caractères ...)

Pour la source qui fait autorité sur ces détails, reportez-vous à la spécification de langue Java .

Vous pouvez consulter ici à propos de 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 alors que octet n'en utilise que 8.

Imaginez que vous travailliez sur une structure volumineuse (tableaux, matrices, etc.), alors vous feriez mieux de vous occuper du type que vous utilisez afin de réduire l'utilisation de la mémoire.

Je suppose qu'il existe plusieurs types d'applications de ce type:

1) Ils imposent des restrictions sur la taille (et le signe) des variables pouvant y être stockées.

2) Ils peuvent ajouter un peu de clarté au code (par exemple, si vous utilisez un caractère, toute personne qui lit le code sait ce que vous prévoyez d'y stocker).

3) Ils peuvent économiser de la mémoire. Si vous avez un grand tableau de nombres, qui seront tous non signés et inférieurs à 256, vous pouvez le déclarer comme un tableau d'octets, en économisant de la mémoire par rapport à si vous déclariez un tableau d'ints.

4) Vous avez besoin de long si les nombres à stocker sont supérieurs à 2 ^ 32 et un double pour les très grands nombres à virgule flottante.

Les types de données primitifs sont obligatoires car ils constituent la base de toute collection complexe.

long, double, octet, etc. sont utilisés si vous n’avez besoin que d’un petit nombre entier (ou autre) qui ne gaspille pas votre espace disque.

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.

Entiers doit être utilisé pour les nombres en général.
Les doubles sont le type de données de base utilisé pour représenter les nombres décimaux.
Les chaînes peuvent contenir essentiellement n'importe quel type de données, mais il est plus facile d'utiliser ints et confuse d'utiliser une chaîne sauf pour le texte.
Les caractères sont utilisés lorsque vous souhaitez uniquement conserver une lettre, bien qu'ils ne soient essentiellement que pour la clarté.
Les courts-métrages, les longs et les flottants ne sont peut-être pas nécessaires, mais si vous créez, par exemple, un tableau de taille 1,00000 qui ne doit contenir que des nombres inférieurs à 1 000, vous voudrez alors utiliser shorts, simplement pour économiser de l'espace.

Cela dépend des données que vous utilisez. Il est inutile d'utiliser un type de données qui réserve une grande quantité de mémoire lorsque vous ne traitez qu'une petite quantité de données. Par exemple, de nombreux types de données réservent de la mémoire avant même d'avoir été utilisés. Les tableaux, par exemple, réservent un montant par défaut (par exemple, 256 octets & Lt; un exemple!), Même si vous n’utilisez que 4 octets de ce nombre.

Consultez ce lien pour obtenir une réponse

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top