Quel est le but de long, double, byte, char dans Java?

Donc j’apprends java et j’ai une question. Il semble que les types int , boolean et ssortingng soient bons pour à peu près tout ce dont j’ai besoin en termes de variables, sauf peut float être que float pourrait être utilisé lorsque des nombres décimaux sont nécessaires dans un nombre.

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

À l’exception peut-être de «court», qui est sans doute un peu un gaspillage d’espace – 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 / OS, 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, dans de rares cas, des arithmétiques non signées à deux octets).
  • Utilisez un octet si vous avez spécifiquement besoin de 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 drapeau “oui / non”.
  • Utilisez un long pour les occasions où vous avez besoin d’un nombre entier, mais où la taille pourrait dépasser 2 milliards (tailles de fichier, mesures de temps en millisecondes / nanosecondes, dans des utilisations avancées pour compacter plusieurs données en un seul nombre);
  • Utilisez un flottant dans les rares cas où (a) vous en stockez un grand nombre et où l’économie de mémoire en vaut la peine, ou (b) effectuez un grand nombre de calculs , et vous pouvez vous permettre de perdre de la précision. Pour la plupart des applications, “float” offre une très faible précision, mais les opérations peuvent être deux fois plus rapides – cela vaut la peine de les tester sur votre processeur, pour trouver que c’est effectivement le cas! [*]
  • Utilisez un court si vous avez vraiment besoin d’une arithmétique signée à 2 octets. Il n’y a pas beaucoup de cas …

[*] Par exemple, dans les architectures Hotspot sur Pentium, les opérations fictives et doubles prennent généralement exactement le même temps , sauf pour la division.

Ne vous laissez pas embourber dans l’utilisation de la mémoire de ces types, à moins que vous ne le compreniez vraiment . Par exemple:

  • Chaque taille d’object est arrondie à 16 octets dans Hotspot. Ainsi, un object avec un champ à un seul octet occupera exactement le même espace qu’un object unique avec un champ long ou double;
  • lors du passage de parameters à une méthode, chaque type prend 4 ou 8 octets sur la stack : vous ne sauvegarderez rien en changeant un paramètre de méthode, par exemple, un int en un court! (J’ai vu des gens faire ça …)

De toute évidence, il y a certains appels d’API (par exemple, divers appels pour des tâches non intensives en CPU qui, pour une raison quelconque, prennent des flottants) où il suffit de passer le type demandé …!

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

Un Java int est de 32 bits, alors qu’un long est de 64 bits, donc lorsque vous devez représenter des entiers supérieurs à 2 ^ 31, long est votre ami. Pour un exemple typique d’utilisation de long, consultez System.currentTimeMillis ()

Un octet est de 8 bits et la plus petite entité adressable sur le matériel le plus moderne. Il est donc nécessaire de lire des données binarys à partir d’un fichier.

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

Un court est de deux octets, 16 bits. À mon avis, c’est le 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 lire des formats de fichiers binarys ou faire des protocoles réseau de bas niveau. Par exemple, les numéros de port ip sont 16 bits.

Char représente un seul caractère, soit 16 bits. C’est la même taille qu’un short, mais un short est signé (-32768 à 32767) alors 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 que par un court, mais cela semble être hors de scope des caractères …)

Pour la source vraiment autorisée sur ces détails, reportez-vous à la spécification du langage Java .

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 32bits alors que l’ octet n’utilise que 8bits.

Imaginez que vous travailliez sur de grandes structures (tableaux, masortingces …), alors vous feriez mieux de prendre en compte le type que vous utilisez pour réduire l’utilisation de la mémoire.

Je suppose que les types de ce genre ont plusieurs objectives:

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

2) Ils peuvent append un peu de clarté au code (par exemple, si vous utilisez un caractère, toute personne lisant le code sait ce que vous prévoyez de stocker).

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

4) Vous avez besoin de beaucoup de temps si les nombres que vous avez besoin de stocker sont plus grands que 2 ^ 32 et un double pour les très grands nombres à virgule flottante.

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

long, double, byte, etc. sont utilisés si vous n’avez besoin que d’un petit nombre entier (ou autre), qui 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 firebase database et de stream.

Les nombres entiers doivent être utilisés pour les nombres en général.
Les doubles sont le type de données de base utilisé pour représenter les décimales.
Les chaînes peuvent contenir essentiellement n’importe quel type de données, mais il est plus facile à utiliser ints et il est difficile d’utiliser des chaînes de caractères à l’exception du texte.
Les caractères sont utilisés lorsque vous ne souhaitez conserver qu’une seule lettre, bien qu’ils ne soient essentiellement que pour plus de clarté.
Les shorts, les longs et les flottants peuvent ne pas être nécessaires, mais si vous créez, par exemple, un tableau de taille 1,00000 qui ne nécessite que des nombres inférieurs à 1 000, vous voudrez utiliser des shorts, simplement pour économiser de l’espace.

C’est relatif aux données que vous traitez. Il est inutile d’utiliser un type de données qui réserve une grande partie de la 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. Prenez des tableaux, par exemple, ils réservent une quantité par défaut (disons 256 octets <- un exemple!) Même si vous n’en utilisez que 4 octets.

Voir ce lien pour votre réponse