7
votes

Java: convertir un caractère en chaîne

Je viens de faire cela dans Eclipse: XXX

Cependant, Eclipse se plaint:

La chaîne de constructeur (CHAR) est indéfini

Comment convertir un caractère en une chaîne alors ??

merci

edit

J'ai essayé la méthode de sous-chaîne mais elle n'a pas fait 'T Travailler pour une raison quelconque mais que Gandalf travaille pour moi juste bien! Très simple!


1 commentaires

Par curiosité, qu'est-ce qui "n'a pas fonctionné"? Quel message d'erreur vous a-t-il donné?


6 Réponses :


13
votes

Voyage le plus simple? XXX PRE>

ou bien sûr P>

String.valueOf('c');


4 commentaires

Travaillé et je comprends ça. :) Cela semble un peu étrange cependant, peut-être parce que c'est trop facile!


La concaténation 'C' à "" est moins souhaitable car elle utilise StressBuilder. String.Valueof est l'approche préférée.


@Steve - Peut-être, peut-être pas. Cela dépend de l'intelligence du compilateur. Le JLS permet à un compilateur Java de réécrire les expressions de concaténation à chaîne à la séquence de code équivalente la plus efficace.


@Stephen J'ai utilisé Javac et Javap (1.6.0_10) et 'C' + "" Utilise à l'aide de StringBuilder. Ainsi, alors que les JLS peuvent autoriser la réécriture, le compilateur Sun ne le fait pas.



3
votes
String x = String.valueOf('c');`
That's the most straight forward way.

0 commentaires

2
votes
String firstInput = removeSpaces(myIn.readLine());
String first = firstInput.substring(0,1);
This has an advantage that no new storage is allocated.

5 commentaires

-1 - Faux. Un nouveau stockage est attribué pour représenter l'objet String créé par la sous-chaîne. string.valueof (char) potentiellement n'acitez aucun nouvel espace ... si le caractère est inférieur à 127 et que vous avez déjà appelé ValueOf pour ce caractère.


@Stephen. VRAI. Au moins avec Sun SDK. Il utilise le constructeur de cordes privées de paquet qui découpe la magie sur le même tableau char [] que firstinput utilise. Veuillez vérifier le code source SDK pour cela.


@Alexandre. Le constructeur de chaînes privées renvoie un nouvel objet à chaîne. Un nouveau stockage est donc alloué. Sur un JVM 32 bits, il est au moins 4 mots + l'en-tête d'objet. Jeez ...


@Stephen. J'ai ajouté une réponse à votre réponse Stackoverflow.com/questions/1829421/... . Je ne sais pas ce que JDK vous utilisez, mais en ce qui concerne Sun 1.6, vous ne pouvez pas aller de char à chaîne sans allouer chaîne Durée. SUBSTRUMATION AU MOINS N'EST PAS ALLOCATION UN NOUVEAU Char [] Array pour le stockage interne. Jeez ...


@Stephen. Après avoir supprimé votre mauvaise réponse, faites une décence pour supprimer vos commentaires de diffusion.



4
votes

au lieu de ... xxx

vous pouvez utiliser ... xxx

SUBSTRORS (COMMENCE, END) vous donne un segment d'une chaîne - dans ce cas, 1 caractère.


0 commentaires

3
votes

Pourquoi ne pas utiliser la sous-chaîne?

String first = firstInput.substring(0, 1);


0 commentaires

1
votes

Vous pouvez le faire:

String s = Character.toString('k');


2 commentaires

Qui appelle juste caractère.valueof ('k')


Non, ce n'est pas du tout, il appelle String.Valueof (Char);