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 char
e di ricollegarli non è richiesta nel codice normale.
Confronta questo con C / C ++ dove "foo"
hai un fascio di char
s terminato da un byte zero su un lato e string
sull'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 String
chiamata).
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 valueOf
metodi.
String
fosse 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.
CharSequence
interfaccia 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 + "";
toString
correttamentechar[]
. Potrebbe funzionare su alcuni fornitori e versioni specifici di JVM.
a
e crea un altro oggetto String che si concatena con a.toString()
e""