Toute personne utilisant des types primitifs courts et octets, dans de vraies applications?

StackOverflow https://stackoverflow.com/questions/402247

  •  03-07-2019
  •  | 
  •  

Question

Je programme en Java depuis 2004, principalement des applications d'entreprise et Web. Mais je n’ai jamais utilisé short ou octet , autre qu’un programme jouet, pour savoir comment ces types fonctionnent. Même dans une boucle de 100 fois, nous utilisons généralement int . Et je ne me souviens pas si j’ai rencontré un code utilisant octet ou short , autre que des API et des infrastructures publiques.

Oui, je sais, vous pouvez utiliser un octet ou un octet pour économiser de la mémoire dans de grands tableaux, dans les cas où les économies de mémoire importent réellement. Est-ce que quelqu'un veut pratiquer ça? Ou c'est juste quelque chose dans les livres.

[Modifié]

L’utilisation de baies octets pour la programmation réseau et la communication par socket est un usage courant. Merci, Darren, de le signaler. Maintenant, que diriez-vous de court ? Ryan, a donné un excellent exemple. Merci, Ryan.

Était-ce utile?

La solution

N'oubliez pas que Java est également utilisé sur les appareils mobiles, où la mémoire est beaucoup plus limitée.

Autres conseils

J'utilise beaucoup d'octets. Habituellement sous la forme de tableaux d'octets ou ByteBuffer, pour les communications réseau de données binaires.

J'utilise rarement float ou double et je ne pense pas avoir déjà utilisé short.

J'ai beaucoup utilisé 'octets', dans le code C / C ++ pour implémenter des fonctionnalités telles que la compression d'images (c'est-à-dire l'exécution d'un algorithme de compression sur chaque octet d'un bitmap en noir et blanc) et le traitement de fichiers binaires. messages réseau (en interprétant les octets dans le message).

Cependant, je n'ai pratiquement jamais utilisé les termes "float" ou "double".

L’utilisation principale que j’ai vue pour eux est lors du traitement de données avec une structure inconnue ou même sans structure réelle. La programmation réseau est un exemple du premier modèle (celui qui envoie les données sait ce que cela signifie, mais vous n’en avez peut-être pas la moindre idée). Par exemple, la compression d’images en 256 couleurs (ou en niveaux de gris) est un exemple du dernier.

De prime abord, grep me vient à l’esprit comme une autre utilisation, de même que toute sorte de copie de fichier. (Bien sûr, le système d'exploitation le fera, mais parfois, cela ne suffit pas.)

Le langage Java lui-même rend l’utilisation des types octet ou court déraisonnablement difficile. Chaque fois que vous effectuez une opération sur une valeur octet ou short , Java le promeut d'abord en int , et le résultat de l'opération est renvoyé sous la forme suivante: un int . En outre, ils sont signés et il n'y a pas d'équivalent non signé, ce qui est une autre source fréquente de frustration.

Vous finissez donc par utiliser beaucoup octet car il reste le bloc de construction de base de tout ce qui est cyber, mais le type court pourrait également ne pas exister.

Jusqu'à aujourd'hui, je n'ai pas remarqué à quel point je les utilise rarement.

J'ai utilisé des octets pour des éléments liés au réseau, mais la plupart du temps, ils étaient destinés à mes propres outils / apprentissage. Dans les projets de travail, ces choses sont gérées par des frameworks (JSP par exemple)

Court? presque jamais.

Longue? Ni l'un ni l'autre.

Mes littéraux entiers préférés sont toujours int, pour les boucles, les compteurs, etc.

Lorsque les données proviennent d'un autre endroit (une base de données, par exemple), j'utilise le type approprié, mais pour les littéraux, j'utilise toujours int.

J'utilise des octets dans beaucoup d'endroits différents, impliquant principalement le traitement de données de bas niveau. Malheureusement, les concepteurs du langage Java ont signé des octets. Je ne peux pas penser à une situation dans laquelle avoir des valeurs d'octet négatives a été utile. Avoir une plage de 0 à 255 aurait été beaucoup plus utile.

Je ne pense pas avoir jamais utilisé de short dans un code approprié. Je n’utilise jamais non plus de float (si j’ai besoin de valeurs en virgule flottante, j’utilise toujours double).

Je suis d'accord avec Tom . Idéalement, dans les langages de haut niveau, nous ne devrions pas nous préoccuper des représentations sous-jacentes des machines. Nous devrions pouvoir définir nos propres plages ou utiliser des nombres à précision arbitraire.

lorsque nous programmons des appareils électroniques tels que les téléphones mobiles, nous utilisons des octets et des raccourcis. Dans ce cas, nous devons prendre soin de la gestion de la mémoire.

Il est peut-être plus intéressant de regarder la sémantique de int. Ces limites et cette troncature silencieuse sont-elles ce que vous voulez? Pour le code au niveau de l'application qui veut vraiment des entiers de taille arbitraire, c'est simplement que Java n'a aucun moyen de les exprimer de manière raisonnable.

J'ai utilisé des octets lors de la sauvegarde de State lors de la vérification du modèle. Dans cette application, les économies d'espace valent le travail supplémentaire. Sinon, je ne les utilise jamais.

J'ai constaté que j'utilisais des variables d'octet lors du traitement d'images de bas niveau. Les routines de tirage au sort .Net GDI + étant très lentes, j’ai moi-même roulé à la main.

La plupart du temps, cependant, je m'en tiens à des entiers signés à moins que je ne sois obligé d'utiliser quelque chose de plus grand, compte tenu des contraintes du problème. Toutes les modélisations physiques que je fais nécessitent généralement des flottants ou des doublons, même si je n’ai pas besoin de précision.

le POI Apache utilisait plusieurs fois short . Probablement à cause de la limitation du nombre de lignes / colonnes dans Excel.

Il y a quelques mois, ils ont été remplacés par int en remplacement de

.

createCell (short columnIndex) )

avec

createCell (colonne int. ) .

Sur les grilles de données en mémoire, cela peut être utile. Le concept d'une grille de données comme Gemfire consiste à avoir une carte géographiquement distribuée. Lorsque vous n’avez pas assez de mémoire, vous pouvez déborder sur le disque avec la stratégie LRU, mais les clés de toutes les entrées de votre carte restent en mémoire (du moins avec Gemfire).

Il est donc très important que vos clés aient un faible encombrement, en particulier si vous manipulez de très grands ensembles de données. Pour la valeur d'entrée, lorsque vous le pouvez, il est également préférable d'utiliser le type approprié avec un faible encombrement mémoire ...

Dans les applications Java, j'ai utilisé des shorts et des octets pour communiquer avec des microcontrôleurs usb ou série personnalisés afin de recevoir des valeurs 10 bits encapsulées dans 2 octets.

Les

octets et les courts sont largement utilisés dans le développement de cartes Java. Regardez ma réponse à Existe-t-il des utilisations réelles pour le type primitif octet Java? .

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