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 String
se maneja especialmente en Java, incluso en "foo"
realidad es un String
. Por lo tanto, la necesidad de dividir una Cadena en char
s individuales y unirlas de nuevo no se requiere en el código normal.
Compare esto con C / C ++ donde "foo"
tiene un paquete de char
s terminado por un byte cero en un lado y string
en 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 String
llamada).
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 valueOf
métodos.
String
se 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.
CharSequence
interfaz 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.valueOf
mé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 + "";
toString
funciona correctamente char[]
. Podría funcionar en algunos proveedores específicos y versiones de la JVM.
a
y crear otro objeto String que se concatene con a.toString()
y""