web-dev-qa-db-fra.com

Pourquoi n'y a-t-il pas de type primitif pour la chaîne?

Pourquoi ne pas Java a-t-il un type primitif pour la chaîne lorsque la plupart des autres types de données font?

34
user241924

La chaîne est un objet, ce n'est pas un type primitif, juste une gamme de caractères. La raison pour laquelle les types primitifs existent dans Java est-il intéressant, extrait de ne interview James Gosling :

Bill Venners: Pourquoi y a-t-il des types primitifs en Java? Pourquoi tout n'était pas un objet?

James Gosling: Totalement une chose d'efficacité. Il y a toutes sortes de personnes qui ont construit des systèmes dans lesquels Ints et qui sont tous des objets. Il existe une variété de façons de le faire, et tous ont des problèmes assez graves. Certains d'entre eux sont juste lents, car ils allouent de la mémoire pour tout. Certains d'entre eux essaient de faire des objets où ils sont parfois des objets, ils ne sont parfois pas (ce que le système LISP standard a fait), puis les choses sont vraiment bizarres. Cela fonctionne en quelque sorte, mais c'est étrange.

Il suffit de le rendre telle qu'il y ait des primitifs et des objets, et ils sont juste différents. Vous résolvez beaucoup de problèmes.

Donc, en bref, les types primitifs existent pour des raisons d'efficacité.

55
Jon

int, char, flotter, double, etc. ont tous une longueur fixe en mémoire. par exemple. A int comporte 4 octets, donc 32bits.

mais une chaîne peut avoir une longueur différente, c'est en fait une gamme de caractères.

17
Yin Zhu

La plupart des langages de programmation ne considèrent pas une primitive à chaîne car c'est en fait une gamme de caractères. Les types primitifs ont presque toujours une taille fixe.

Je devrais dire que certaines personnes pourraient considérer que la chaîne est "primitive" car elle est intégrée. Mais ce n'est pas primitif dans le sens d'être un type de base par opposition à un type composite. Parce qu'une chaîne est une gamme de caractères, il s'agit d'un type composite.

6
Eric Mickelsen