Char vs String en Java?
Je suis à l'apprentissage de Java, cette année, dans le cadre de l'AP de l'Ordinateur le programme de Sciences, et alors que je lisais à propos de "Char" et "String" je ne pouvais pas comprendre pourquoi on se donne la peine d'utiliser "Char" et seulement être en mesure de stocker un caractère plutôt que de simplement utiliser la Chaîne "string" et être capable de stocker beaucoup plus que cela. En bref, quel est le point de "char" si elle ne peut stocker qu'un seul caractère?
Tournez autour de votre question: Pourquoi voudriez-vous utiliser une Chaîne de caractères si vous souhaitez uniquement pour stocker un caractère?
Et comment voulez-vous construire une chaîne si tu n'avais pas le moyen de représenter un seul caractère?
L'interopérabilité est également une considération, byte, char et les autres primitives sont les structures de données communes dans la plupart des langues
Comment voulez-vous mettre en œuvre
Et comment voulez-vous construire une chaîne si tu n'avais pas le moyen de représenter un seul caractère?
L'interopérabilité est également une considération, byte, char et les autres primitives sont les structures de données communes dans la plupart des langues
Comment voulez-vous mettre en œuvre
String
, si vous n'avez pas char
? Un char
utilise deux octets, une Chaîne vide utilise de 24 octets. Si vous pouvez utiliser char
s il est de nombreuses fois plus efficace.OriginalL'auteur | 2013-09-20
Vous devez vous connecter pour publier un commentaire.
Les gens sont mentionnant des problèmes de mémoire, qui sont valables, mais je ne pense pas que c'est une raison très importante 99% du temps. Une raison importante est que le compilateur Java est vous dire si vous faites une erreur alors que vous n'avez pas à la figure it out sur votre propre.
Par exemple, si vous voulez seulement 1 caractère pour une variable, vous pouvez utiliser un
char
pour enregistrer la valeur et maintenant personne ne peut mettre autre chose là sans que cela soit une erreur. Si vous avez utilisé unString
au lieu de cela, il pourrait y avoir deux caractères dans la Chaîne même si vous aviez l'intention que de ne jamais être possible. En fait, il pourrait y avoir 0 caractères dans la Chaîne qui serait tout aussi mauvais. Aussi, tout le code qui utilise laString
devra dire "obtenir le premier caractère de la Chaîne" où il pourrait simplement dire, "donnez-moi le personnage".Une analogie (qui ne peut faire sens pour vous encore, malheureusement) serait, "Pourquoi voudrais-je dire un
Person
a unName
lorsque je pourrais en direPerson
a une Liste deNames
?" Les mêmes raisons s'appliquent. Si vous voulez seulement unPerson
avoir unName
, puis de lui donner une liste deName
s ajoute beaucoup de frais de maintenance.OriginalL'auteur Daniel Kaplan
Vous pourriez envisager de cette analogie:
Vous avez besoin d'une pomme. Préférez-vous avoir une pomme dans votre main, ou une grosse boîte qui peut contenir plus de pommes, mais ne doit contenir une?
La
char
primitive de type de données est plus facile à travailler que leString
classe dans les situations où vous avez seulement besoin d'un seul caractère. C'est aussi beaucoup moins de frais généraux, parce que leString
classe a beaucoup de méthodes et de l'information dont il a besoin à la boutique pour être efficace lors de la manipulation de chaîne de caractères multiples. À l'aide de laString
classe quand vous avez seulement besoin d'un caractère est essentiellement overkill. Si vous voulez lire à partir d'une variable de deux types pour obtenir le caractère, c'est le code qui permettrait de le faire:Si ce code semble compliqué, vous pouvez l'ignorer. La conclusion est que l'utilisation de
String
lorsque vous avez besoin seulement d'un caractère est de surcharger les choses.Fondamentalement, la
String
classe est utilisé lorsque vous avez besoin de plus d'un caractère. Vous pourriez tout aussi bien créer un tableau dechar
s, mais alors vous n'auriez pas l'utilité des méthodes de laString
classe, tels que le.equals()
et.length()
méthodes.length
.à moins que votre tableau est plus grand que le nombre de caractères réellement en elle. Tableaux dynamiques et ces
Je pense que c'est vrai.
OriginalL'auteur RaptorDotCpp
String
s sont des objets. Objets toujours aller sur la dynamique de stockage. Stocker une chaîne de caractères, il faudrait au moins une dizaine d'octets.char
s (pasChar
s) sont primitives. Ils prennent montant fixe de l'espace (2 octets). Dans les situations où vous avez besoin pour traiter un seul personnage, la création d'une chaîne de caractères est un gaspillage de ressources. En outre, lorsque vous vous attendez à voir un seul personnage, à l'aide de cordes exigerait que la validation des données passées en a exactement un caractère. Ce serait inacceptable dans les situations où vous devez être extrêmement rapide, comme la base de caractères d'entrée et de sortie.Pour résumer, vous avez besoin d'un
char
en raison dechar
est plus petit qu'unString
d'un caractèrechar
variable.String
l'offre de sécurité décent, trop.C'est un autre point - la réponse parle des tableaux de caractères, pas des caractères individuels.
OriginalL'auteur dasblinkenlight
char
prendre moins de mémoire, pour les moments où vous avez vraiment besoin d'un seul caractère. Il y a également de multiples autres applications pour l'utilisation d'un seul caractère.char
est une primitive de type de données tout enstring
est un objet qui vient à la plus grande charge.Un
string
est également composé dechar
, donc il n'y a que trop.OriginalL'auteur redFIVE
Parce que le char prend moins de mémoire!
Aussi le char est stockée dans la mémoire et non PAS comme une valeur de référence, donc, théoriquement, son plus rapide pour accéder à la char (Vous comprendrez plus tard)
***Remarque: une fois, j'ai eu cette même pensée quand j'ai commencé la programmation sur pourquoi utiliser un int lorsque vous pouvez utiliser un long et ne pas avoir à vous soucier de grands nombres. Cela me dit que vous êtes sur votre chemin pour être un grand programmeur! 🙂
Je voulais souligner que les objets doivent stocker une valeur de référence ET de leurs propriétés de l'objet, son double trouble. Bon point sur le GC, les frais généraux
OriginalL'auteur MobileMon
char
est un type primitif, tandis queString
est un vraiObject
. Dans certains cas où la performance est une préoccupation, il est concevable que vous ne souhaitez utiliser des primitives.Une autre affaire dans laquelle vous souhaitez utiliser
char
, c'est quand vous écrivez Java 1.0 et vous êtes chargé de créer laString
classe!ni serializable
pas charsequence
La chaîne a été autour depuis Java 1.0. La mise en œuvre que j'ai collé est de JDK 7.
Il m'a semblé que vous ont dit que cela pourrait être utilisé pour mettre en œuvre la Chaîne avait vous eu à l'écrire en java 1.0
OriginalL'auteur Brian Gordon
Tout en java peuvent être réduits à des types primitifs. Vous pouvez écrire n'importe quel programme avec les types primitifs. Si vous avez besoin d'une sorte de manière minimaliste de stocker du texte. Un char est aussi vraiment juste un octet, qui est interprétée comme un caractère.
Aussi, si vous souhaitez faire une boucle si tous les caractères dans une chaîne, que vous feriez:
Ce serait beaucoup plus difficile d'essayer de sous-chaîne d'un caractère exact de la Chaîne.
OriginalL'auteur Cruncher
Beaucoup de réponses ici déjà. Alors que les problèmes de mémoire sont valides, vous vous rendez compte il ya des moments où vous souhaitez manipuler directement les caractères. Le word ladder match
où vous essayez d'activer un mot dans une autre, en modifiant un caractère à la fois est un exemple j'ai eu à faire une programmation de classe. Avoir un type char permet de manipuler un seul caractère à la fois. Il vous permet également d'affecter un entier à un char que les cartes de votre jeu de caractères local.
Vous pouvez faire la chose comme char c = 97; et qui va imprimer un. Vous pouvez faire des choses comme incrémenter un caractère de 97 à 122 pour imprimer tous les caractères en minuscules. Parfois, ce est en fait utile.
OriginalL'auteur Vulcronos