Ho un array di caratteri:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
La mia soluzione attuale è fare
String b = new String(a);
Ma sicuramente c'è un modo migliore per farlo?
Ho un array di caratteri:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
La mia soluzione attuale è fare
String b = new String(a);
Ma sicuramente c'è un modo migliore per farlo?
Risposte:
No, quella soluzione è assolutamente corretta e molto minimale.
Si noti tuttavia che questa è una situazione molto insolita: poiché Stringè gestita appositamente in Java, anche in "foo"realtà è una String. Pertanto, la necessità di dividere una stringa in singoli chare di ricollegarli non è richiesta nel codice normale.
Confronta questo con C / C ++ dove "foo"hai un fascio di chars terminato da un byte zero su un lato e stringsull'altro lato e molte conversioni tra loro dovute fanno metodi legacy.
String text = String.copyValueOf(data);
o
String text = String.valueOf(data);
è probabilmente migliore (incapsula la new Stringchiamata).
String(char[])o una variante di questo. E la parte della copia viene eseguita all'interno String(char[]). Ciò non lascia alcun vantaggio a una chiamata diretta oltre alla simmetria con gli altri valueOfmetodi.
Stringfosse modificata e / o migliorata in modo incompatibile o che fosse possibile scegliere diverse implementazioni concorrenti in fase di esecuzione, allora un metodo statico di fabbrica ha senso. Questo non accadrà con una cosa di basso livello come String. Pertanto la mia premessa è: utilizzare il martello più piccolo adatto, non quello più grande disponibile.
CharSequenceinterfaccia mostra quanto sia imperfetto il tuo "non succederà con cose di basso livello come la stringa" è - non cambiano ciò che accade nella stringa perché si sono legati presto ad essa, e ora desiderano non avrebbero.
String str = "wwwwww3333dfevvv";
char[] c = str.toCharArray();
Ora per convertire l'array di caratteri in String, ci sono due modi.
Arrays.toString(c);
Restituisce la stringa [w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v].
E:
String.valueOf(c)
Restituisce la stringa wwwwww3333dfevvv.
In sintesi : presta attenzione Arrays.toString(c), perché otterrai "[w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]"invece di "wwwwww3333dfevvv".
Una stringa in Java è semplicemente un oggetto attorno a una matrice di caratteri. Quindi a
char[]
è identico a una stringa senza scatola con gli stessi caratteri. Creando una nuova stringa dal tuo array di caratteri
new String(char[])
stai essenzialmente dicendo al compilatore di boxare automaticamente un oggetto String attorno alla tua matrice di caratteri.
Puoi usare String.valueOf metodo.
Per esempio,
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);
Per ulteriori informazioni sull'array di caratteri per la stringa, è possibile fare riferimento ai collegamenti seguenti
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
Conversione di un determinato tipo di array in String utilizzando la funzione Stream di Java 8
String stringValue =
Arrays.stream(new char[][]{a}).map(String::valueOf).collect(Collectors.joining());
Prova questo
Arrays.toString(array)
Usa String.value come di seguito;
private static void h() {
String helloWorld = "helloWorld";
System.out.println(helloWorld);
char [] charArr = helloWorld.toCharArray();
System.out.println(String.valueOf(charArr));
}
Puoi anche usare la classe StringBuilder
String b = new StringBuilder(a).toString();
L'uso di String o StringBuilder varia in base ai requisiti del metodo.
1 modo alternativo è di fare:
String b = a + "";
toStringcorrettamentechar[] . Potrebbe funzionare su alcuni fornitori e versioni specifici di JVM.
ae crea un altro oggetto String che si concatena con a.toString()e""