J'ai un tableau de caractères:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Ma solution actuelle est de faire
String b = new String(a);
Mais il y a sûrement une meilleure façon de le faire?
J'ai un tableau de caractères:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Ma solution actuelle est de faire
String b = new String(a);
Mais il y a sûrement une meilleure façon de le faire?
Réponses:
Non, cette solution est absolument correcte et très minime.
Notez cependant qu'il s'agit d'une situation très inhabituelle: étant donné qu'il String
est géré spécialement en Java, même "foo"
est en fait un String
. Ainsi, la nécessité de diviser une chaîne en char
s individuels et de les rejoindre n'est pas requise dans le code normal.
Comparez cela à C / C ++ où "foo"
vous avez un paquet de char
s terminé par un octet zéro d'un côté et string
de l'autre côté et de nombreuses conversions entre elles dues aux méthodes héritées.
String text = String.copyValueOf(data);
ou
String text = String.valueOf(data);
est sans doute mieux (encapsule l' new String
appel).
String(char[])
ou une variante de cela. Et la copie se fait à l'intérieur String(char[])
. Cela ne laisse aucun avantage à un appel direct en plus de la symétrie avec les autres valueOf
méthodes.
String
soit modifiée et / ou améliorée de manière incompatible ou que plusieurs implémentations concurrentes puissent être choisies au moment de l'exécution, alors une méthode d'usine statique est logique. Cela ne se produira pas avec une chose de si bas niveau String
. Par conséquent, ma prémisse est la suivante: utilisez le plus petit marteau approprié, pas le plus grand disponible.
CharSequence
interface montre à quel point votre "ne se produira pas avec des trucs de bas niveau comme la chaîne" - ils ne changent pas ce qui se passe dans la chaîne parce qu'ils s'y sont liés tôt, et maintenant ils souhaitent ils n'auraient pas.
String str = "wwwwww3333dfevvv";
char[] c = str.toCharArray();
Maintenant, pour convertir un tableau de caractères en chaîne, il y a deux façons.
Arrays.toString(c);
Renvoie la chaîne [w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]
.
Et:
String.valueOf(c)
Renvoie la chaîne wwwwww3333dfevvv
.
En résumé : faites attention Arrays.toString(c)
, car vous obtiendrez "[w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]"
au lieu de "wwwwww3333dfevvv"
.
Une chaîne en java n'est qu'un objet autour d'un tableau de caractères. D'où un
char[]
est identique à une chaîne non encadrée avec les mêmes caractères. En créant une nouvelle chaîne à partir de votre tableau de caractères
new String(char[])
vous dites essentiellement au compilateur d'autoboxer un objet String autour de votre tableau de caractères.
Vous pouvez utiliser la String.valueOf
méthode.
Par exemple,
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
String b = String.valueOf(a);
System.out.println("Char Array back to String is: " + b);
Pour plus d'informations sur le tableau de caractères à chaîne, vous pouvez consulter les liens ci-dessous
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
https://www.flowerbrackets.com/convert-char-array-to-string-java/
package naresh.java;
public class TestDoubleString {
public static void main(String args[]){
String str="abbcccddef";
char charArray[]=str.toCharArray();
int len=charArray.length;
for(int i=0;i<len;i++){
//if i th one and i+1 th character are same then update the charArray
try{
if(charArray[i]==charArray[i+1]){
charArray[i]='0';
}}
catch(Exception e){
System.out.println("Exception");
}
}//finally printing final character string
for(int k=0;k<charArray.length;k++){
if(charArray[k]!='0'){
System.out.println(charArray[k]);
} }
}
}
//Given Character Array
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
//Converting Character Array to String using String funtion
System.out.println(String.valueOf(a));
//OUTPUT : hello world
Conversion d'un type de tableau donné en chaîne à l'aide de la fonction Java 8 Stream
String stringValue =
Arrays.stream(new char[][]{a}).map(String::valueOf).collect(Collectors.joining());
Essaye ça
Arrays.toString(array)
Utilisez simplement String.value comme ci-dessous;
private static void h() {
String helloWorld = "helloWorld";
System.out.println(helloWorld);
char [] charArr = helloWorld.toCharArray();
System.out.println(String.valueOf(charArr));
}
Vous pouvez également utiliser la classe StringBuilder
String b = new StringBuilder(a).toString();
L'utilisation de String ou StringBuilder varie selon les exigences de votre méthode.
Une autre façon est de faire:
String b = a + "";
toString
fonctionne correctement char[]
. Il peut fonctionner sur certains fournisseurs et versions spécifiques de la machine virtuelle Java.
a
et la création d'un autre objet String qui concatène avec a.toString()
et""