8
votes

Pourquoi Java a une taille de type de données fixe contrairement à c

dans C Comme nous savons que la taille des types de données (ex. int) peut varier en fonction du compilateur / du matériel.

Mais pourquoi la taille des types de données est constante en langue java? Pourquoi n'avons-nous pas la flexibilité pour la taille de type de données différente en Java en fonction du compilateur?


1 commentaires

Il serait plus approprié de demander pourquoi les tailles ne sont pas fixées en C, car c'est un inconvénient grave de types de taille fixe de C. a été introduit en C99, mais c'est plutôt en retard. Le code C le plus intégré que j'ai vu utilise toujours des types de taille fixe C90 et de la maison.


8 Réponses :


14
votes

Si la taille de type de données varie sur différentes plates-formes que vous perdez de la portabilité.


0 commentaires

1
votes

La flexibilité de C pour cela présente des avantages (consommation de mémoire / de stockage réduite si vous utilisez 32 au lieu de 64 bits), mais ces avantages ont tendance à devenir moins pertinents car le matériel s'améliore (ceci a été conçu dans les années 70). / p>

Cette flexibilité est cependant livrée avec une interopérabilité sévère et des problèmes de vision à long terme (bugs Y 2038).

En revanche, un objet Java a de toute façon une surcharge de stockage, ce qui permet d'économiser 4 octets à chaque objet de date serait assez inutile et seulement gênant.


0 commentaires

1
votes

Parce que c'est Java. Voir le Spécification de la langue Java .


0 commentaires

18
votes

La machine JVM (machine virtuelle Java) est conçue pour être indépendante de la plate-forme. Si les tailles de type de données étaient différentes sur les plates-formes, la cohérence inter-plate-forme est sacrifiée.

Le JVM isole le programme de l'OS et de la plate-forme sous-jacents. Cela peut rendre la vie difficile pour effectuer des travaux spécifiques au système, mais les avantages sont que vous pouvez écrire-une fois, courir - n'importe où (c'est en grande partie vrai, avec quelques problèmes malheureux. Écrire une fois, test-partout est une approche beaucoup plus pratique ).


0 commentaires

3
votes

Pour obtenir une réponse vraiment complète à cela, vous auriez besoin de faire beaucoup de lecture historique dès les premiers jours de Java. Certainement, les concepteurs auraient pu avoir inclus un système de type primitif plus compliqué. Cependant, lorsque Java a éclaté sur le large stade, elle visait aux applets. Code pour exécuter dans un navigateur, organiser une interface utilisateur complexe, n'a pas (et rien) doit savoir s'il est en cours d'exécution sur le problème infâme MNS-49 (7 caractères 7 bits par mot), ou le Honeywell 68000 (4 9 -Bit des caractères par mot), ou un processeur moderne ennuyeux. C'est beaucoup plus important que quiconque peut coder le bit arithmétique sur un int et savoir ce qui va se passer après 32 changements.


0 commentaires

1
votes

L'idée de Java était "Écrire une fois, courir n'importe où" sans recompilation. Cela signifie que chaque VM a la même taille de données. Bien sûr, sur des machines de 64 bits, il utilise des références 64 bits, mais vous n'avez pas accès à ceux-ci, donc cela n'a pas d'importance.

Cela fonctionne assez bien, mais une chose que je souhaite, c'est que cela souhaite que nous puissions obtenir des indices de réseau de 64 bits. Cela n'a pas vraiment d'importance dans la journée, mais pour des fichiers mappés de grande mémoire, c'est une douleur énorme. Vous devez les briser en morceaux de 2 Go.


1 commentaires

As-tu réellement besoin de cela? oh Y a-t-il un bug sur ce sujet dans le défilé de la bogue Sun?



0
votes

c langue a son propre avantage de faire varier la taille de type de données. La mémoire principale de cette époque n'est pas trop ... Chaque programmeur doit écrire du code d'espace optimisé.

Nowadays Space n'est plus un problème ... Un programme portable est beaucoup plus préférable.

QUOI POURQUOI JAVA PORTABLE JAVA NE PAS prendre en charge des types de données de taille variables


0 commentaires

0
votes

Parce que Java est une langue de la plate-forme indépendante. C'est pourquoi dans la taille de la taille du type de données Java est fixe


0 commentaires