Tengo una matriz de caracteres:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Mi solución actual es hacer
String b = new String(a);
¿Pero seguramente hay una mejor manera de hacer esto?
Tengo una matriz de caracteres:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Mi solución actual es hacer
String b = new String(a);
¿Pero seguramente hay una mejor manera de hacer esto?
Respuestas:
No, esa solución es absolutamente correcta y muy mínima.
Sin embargo, tenga en cuenta que esta es una situación muy inusual: dado que Stringse maneja especialmente en Java, incluso en "foo"realidad es un String. Por lo tanto, la necesidad de dividir una Cadena en chars individuales y unirlas de nuevo no se requiere en el código normal.
Compare esto con C / C ++ donde "foo"tiene un paquete de chars terminado por un byte cero en un lado y stringen el otro lado y muchas conversiones entre ellos debido a métodos heredados.
String text = String.copyValueOf(data);
o
String text = String.valueOf(data);
es posiblemente mejor (encapsula la new Stringllamada).
String(char[])o una variante de eso. Y la parte de la copia se hace adentro String(char[]). Esto no deja ningún beneficio a una llamada directa además de la simetría con los otros valueOfmétodos.
Stringse cambie y / o mejore de manera incompatible o se puedan elegir varias implementaciones competidoras en tiempo de ejecución, entonces un método de fábrica estático tiene sentido. Esto no sucederá con un nivel tan bajo como String. Por lo tanto, mi premisa es: usar el martillo más pequeño adecuado, no el más grande disponible.
CharSequenceinterfaz muestra cuán defectuoso es su "no sucederá con cosas de bajo nivel como una cadena": no cambian lo que sucede en la cadena porque se ataron a ella desde el principio, y ahora desean ellos no lo habrían hecho.
String str = "wwwwww3333dfevvv";
char[] c = str.toCharArray();
Ahora para convertir la matriz de caracteres en String, hay dos formas.
Arrays.toString(c);
Devuelve la cadena [w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v].
Y:
String.valueOf(c)
Devuelve la cadena wwwwww3333dfevvv.
En resumen : preste atención Arrays.toString(c), porque obtendrá en "[w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]"lugar de "wwwwww3333dfevvv".
Una cadena en java es simplemente un objeto alrededor de una serie de caracteres. De ahí un
char[]
es idéntico a una cadena sin caja con los mismos caracteres. Al crear una nueva cadena a partir de su conjunto de caracteres
new String(char[])
esencialmente le está diciendo al compilador que autoboxbox un objeto String alrededor de su matriz de caracteres.
Puedes usar el String.valueOfmétodo.
Por ejemplo,
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);
Para obtener más información sobre la matriz de caracteres a la cadena, puede consultar los enlaces a continuación
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
Convertir cualquier tipo de matriz a String usando la función Java 8 Stream
String stringValue =
Arrays.stream(new char[][]{a}).map(String::valueOf).collect(Collectors.joining());
Prueba esto
Arrays.toString(array)
Simplemente use String.value como el siguiente;
private static void h() {
String helloWorld = "helloWorld";
System.out.println(helloWorld);
char [] charArr = helloWorld.toCharArray();
System.out.println(String.valueOf(charArr));
}
También puedes usar la clase StringBuilder
String b = new StringBuilder(a).toString();
El uso de String o StringBuilder varía con los requisitos de su método.
Una forma alternativa es hacer:
String b = a + "";
toStringfunciona correctamente char[]. Podría funcionar en algunos proveedores específicos y versiones de la JVM.
ay crear otro objeto String que se concatene con a.toString()y""