Pourquoi le Java char primitive prendre les 2 octets de mémoire?
Est-il une raison pourquoi Java char type de données primitif est de 2 octets contrairement à C, qui est de 1 octet?
Grâce
- La réponse courte est parce qu'ils ont raté son coup: ils devraient avoir utilisé des caractères 32 bits.
- Non, ils ne devraient pas avoir utilisé de 32 bits de caractères larges. Que ferait les frais généraux, même le pire!
- Ouais. Ils devraient vraiment avoir utilisé 6 bits à l'échelle de caractères. Cela permettrait d'économiser de l'espace, et après tout, les majuscules doivent être assez pour tout le monde.
- 5 bits par caractère sont assez si vous voulez être efficace en terme d'espace. En fait, les 4 autres permutations peuvent également être utilisés ce qui permet d'économiser encore plus d'espace.
Vous devez vous connecter pour publier un commentaire.
Lors de Java a été conçu à l'origine, il était prévu que tout caractère Unicode rentre dans 2 octets (16 bits),
char
etCharacter
ont été conçus en conséquence. En fait, un caractère Unicode peuvent maintenant nécessiter jusqu'à 4 octets. Ainsi, UTF-16, la Java interne de l'encodage, nécessite des caractères supplémentaires utilisation de 2 unités de code. Les personnages dans le Plan Multilingue de Base (les plus communs) toujours utiliser 1. Javachar
est utilisé pour chaque unité de code. Cette Soleil de l'article l'explique bien.char
en Java est codé en UTF-16, ce qui nécessite un minimum de 16-bits de stockage pour chaque personnage.En Java, un caractère est codé dans UTF-16 qui utilise 2 octets, alors que la normale chaîne C est plus ou moins juste un tas d'octets. Quand le C a été conçu, à l'aide de ASCII (qui ne couvre que la langue anglaise jeu de caractères) a été jugée suffisante, tandis que le Java concepteurs déjà prises en compte pour l'internationalisation. Si vous souhaitez utiliser l'Unicode avec chaînes C, la UTF-8 encodage c'est la méthode qu'il a ASCII comme un sous-ensemble et de ne pas utiliser le 0 octet (à la différence de l'UTF-16), qui est utilisé comme une fin de chaîne de marqueur dans C. une Telle fin de chaîne de marqueur n'est pas nécessaire en Java comme une chaîne de caractères est un type complexe ici, avec une longueur explicite.
Dans les précédents langages tels que le C ASCII notations sont utilisées.
Et la gamme est 127 127 des symboles uniques et les caractères de la langue.
Alors que JAVA est livré avec une fonctionnalité appelée "INTERNATIONALISATION", c'est tout le Lisible par l'Homme caractères(y Compris les Régional symboles) sont également ajoutés en elle , et la gamme est également augmenté , de sorte que plus la mémoire requise , le système d'unifier l'ensemble de ces symboles est "Standard Unicode Système", et donc que
cette Unification exige que l'octet supplémentaire en JAVA.
Le premier octet reste comme elle est, et les caractères ASCII sont rangés à 127 comme en C,C++, mais unifiée personnages sont que ajoutée.
Donc de 16 bits pour le char en JAVA et 8 bits pour l'omble de C.
Java™ Tutoriels:
Java utilisé comme un internationaliser donc, son travail dans différentes langues et ont besoin d'espace de plus d'un octet, c'est pourquoi son 2byte de l'espace dans le char.
par exemple pour la langue chinoise ne peut pas hanfle un octet de char.
Comme nous le savons, c suppors ASCII où que java prend en charge Unicode, qui contient 3 choses qui est
1-ASCII
2-ASCII étendu
3-les caractères du langage
L'ASCII est un sous-ensemble de la norme unicode.ASCII prend en charge uniquement l'anglais à la langue comme de l'Unicode prend en charge les multinationales de la langue.autrement java caractère est codé au sein de l'UTF-16 qui utilise 2 octets.pour l'ensemble de la raison et que l'Unicode est la version étendue de l'ASCII ,donc il utilise 16 bits insted de 8 bits.