En Java, est-ce que quelqu’un utilise court ou octet?

En dehors de l’utilisation (byte []) en streaming, je ne vois pas vraiment les octets et les courts utilisés. D’autre part, j’ai vu longtemps utilisé où la valeur réelle est | 100 | et l’octet serait plus approprié. Est-ce une conséquence de la nature relativement peu coûteuse de la mémoire actuelle ou s’agit-il simplement d’une minutie dont les développeurs n’ont pas à s’inquiéter?

Ils sont utilisés lors de la programmation de périphériques intégrés ne disposant que de peu de mémoire ou d’espace disque. Tels que les appareils et autres appareils électroniques.

L’octet est également utilisé dans la programmation Web de bas niveau, où vous envoyez des requêtes à des serveurs Web à l’aide d’en-têtes, etc.

Le type de données d’ byte est fréquemment utilisé pour traiter des données brutes provenant d’un fichier ou d’une connexion réseau, bien qu’il soit principalement utilisé comme byte[] . Les types short et short[] sont souvent utilisés en relation avec les interfaces graphiques et le traitement des images (pour les emplacements des pixels et la taille des images) et pour le traitement du son.

La principale raison d’utiliser un byte ou un short est la clarté. Le code de programme indique de manière non catégorique que seuls 8 ou 16 bits doivent être utilisés. Lorsque vous utilisez accidentellement un type plus gros (sans transtypage approprié), vous obtenez une erreur de compilation. (Certes, cela pourrait également être considéré comme une gêne lors de l’écriture du code … mais encore une fois, la présence des diffusions de type signale le fait qu’il se produit une troncature sur le lecteur.)

Vous n’obtenez aucun gain de place en utilisant des byte ou des caractères short dans des variables simples plutôt que des variables int car la plupart des implémentations Java alignent les variables de stack et les membres d’object sur les limites de mots. Cependant, les types de tableau primitifs sont traités différemment. c’est-à-dire que les éléments des boolean , des byte , des caractères et short tableaux short sont alignés octets. Toutefois, à moins que les tableaux ne soient volumineux ou de grande taille, ils ne consortingbuent pas de manière significative à l’utilisation globale de la mémoire par l’application.

Je suppose donc que la principale raison pour laquelle les développeurs n’utilisent pas d’ byte ou de valeur aussi short que ce à quoi vous vous attendez (un développeur C?) Est que cela ne fait vraiment pas beaucoup (ou souvent aucune différence). Les développeurs Java ont tendance à ne pas être obsédés par l’utilisation de la mémoire, contrairement aux développeurs C de la vieille école :-).

Dans un processeur 64 bits, les registres sont tous 64 bits. Par conséquent, si votre variable locale est affectée à un registre, elle est un booléen, octet, short, char, int, float, double ou long, elle n’utilise pas de mémoire. N’économisez aucune ressource. Les objects étant alignés sur 8 octets, ils utilisent toujours un multiple de 8 octets en mémoire. Cela signifie que Booléen, Octet, Court, Caractère, Entier, Long, Flottant et Double, AtomicBoolean, AtomicInteger, AtomicLong, AtomicReference utilisent tous la même quantité de mémoire.

Comme il a été noté, les types courts sont utilisés pour les tableaux et les formats de données de lecture / écriture. Même dans ce cas, le terme IMHO n’est pas très utilisé.

Il convient également de noter qu’un GB coûte environ £ 80 sur un serveur, donc un MB équivaut à environ 8 pence et un KB à environ 0,008 pence. La différence entre octet et long est d’environ 0,00006 pence. Votre temps vaut plus que cela. esp si vous avez déjà un bug qui résulte d’un type de données trop petit.

J’utiliserais le plus souvent les types short et byte lorsque je travaillerais avec des formats binarys et des instances DataInput / DataOutput . Si la spécification indique que la valeur suivante est une valeur de 8 ou 16 bits et qu’il n’y a aucune valeur à les promouvoir en int (peut-être que les indicateurs de bits), ils constituent un choix évident.

L’arithmétique sur les byte s et short s short est plus délicate qu’avec int s. Par exemple, si b1 et b2 sont byte variables à deux byte , vous ne pouvez pas écrire byte b3 = b1 + b2 pour les append. Ceci est dû au fait que Java ne fait jamais d’arithmétique en interne dans quelque chose de plus petit qu’un int , donc l’expression b1 + b2 a le type int bien qu’elle n’ajoute que deux valeurs d’ byte . Vous devez écrire byte b3 = (byte) (b1 + b2) place.

Je me suis beaucoup servi de short lors de la création d’un émulateur basé sur une architecture 16 bits. J’ai envisagé d’utiliser char pour que je puisse avoir des choses non signées mais l’esprit d’utiliser un vrai type entier a finalement gagné.

edit: en ce qui concerne la question inévitable de ce que je faisais quand j’avais besoin du bit le plus significatif: avec la chose que je imitais, il était presque jamais utilisé. Dans les quelques endroits où il a été utilisé, je me suis contenté de modificateurs de bits ou de hackers mathématiques.

Je pense que dans la plupart des applications, short n’a pas de signification de domaine, il est donc plus logique d’utiliser Integer.

short et d’autres sont souvent utilisés pour stocker des données d’image. Notez que c’est le nombre de bits qui est vraiment important, pas les propriétés arithmétiques (qui provoquent simplement une promotion sur int ou mieux.

short est également utilisé comme index de tableau dans JavaCard (1.0 et 2.0, IIRC, mais pas 3.0 qui possède également une stack HTTP et des services Web).

octet [] arrive tout le temps; tampons, en particulier pour les réseaux, les fichiers, les graphiques, la sérialisation, etc.

La plupart du temps, il n’ya jamais vraiment de bonne raison technique pour un développeur (Java, C #, BASIC, etc.) de choisir un int, un court ou un octet – quand la capacité est suffisante, bien sûr. Si la valeur sera inférieure à 2 milliards alors int sera ce sera.

Êtes-vous sûr que nous aurons des personnes de plus de 255 ans? Eh bien, on ne sait jamais!

32 767 pays possibles ne suffisent-ils pas? Ne pense pas trop petit!

Dans votre exemple, vous pouvez être parfaitement satisfait de votre variable d’octet contenant 100, si vous êtes absolument certain qu’il ne va JAMAIS déborder. Pourquoi les gars utilisent le plus int? Parce que parce que.

C’est une de ces choses que la plupart d’entre nous ne font que parce que nous l’avons vue la plupart du temps et que nous n’avons jamais posé la même question.

Bien sûr, je n’ai rien contre “toutes choses int”. Je préfère juste utiliser le bon type pour chaque type de valeur, sans stress.