sobreescribir redefinir poo método metodos metodo imprimir funciona como java tostring arrays

java - redefinir - sobreescribir el método tostring()



¿Por qué el método toString en Java no parece funcionar para una matriz (9)

Quiero convertir una matriz de caracteres a un objeto de cadena utilizando el método toString () en java. Aquí hay un fragmento del código de prueba que utilicé:

import java.util.Arrays; class toString{ public static void main(String[] args){ char[] Array = {''a'', ''b'', ''c'', ''d'', ''e'', ''f''}; System.out.println(Array.toString()); } }

En principio, debería imprimir abcdef , pero está imprimiendo un galimatías aleatorio de la talla de [C @ 6e1408 o [C @ e53108 cada vez que se ejecuta el programa. No necesito una alternativa de esto, pero quiero saber por qué sucede esto.


De esta manera encontré trabajado:

public String convertToString(char[] array, int length) { String char_string; String return_string=""; int i; for(i=0;i<length;i++) { char_string=Character.toString(array[i]); return_string=return_string.concat(char_string); } return return_string; }


Hay un error ortográfico de "Array.toString ()" en "Arrays.toString (Array)" Supongo que sí, y en lugar de escribir name.toString (), pase el nombre como argumento y Write como se indica arriba.


La implementación predeterminada del método toString de la clase char [] devuelve una representación de cadena de la dirección base de la matriz, que es lo que se está imprimiendo aquí. No podemos cambiarlo, ya que la clase de char [] no es extensible.


Las matrices no anulan a toString . Hay un método estático: java.util.Arrays.toString que debería resolver su problema.

import java.util.Arrays; class toString { public static void main(String[] args){ char[] Array = {''a'', ''b'', ''c'', ''d'', ''e'', ''f''}; System.out.println(Arrays.toString(Array)); } }


No sé de dónde sacas la idea de que "en principio" debería imprimir "abcdef". ¿Dónde está eso documentado?

Algo como [C@6e1408 ciertamente no es un galimatías aleatorio: es la misma forma de construir una cadena desde un objeto que cualquier otro tipo que no anule toString() herede; es una representación del tipo ( [ indica una matriz; C indicando el tipo primitivo de char ) seguido por el código hash de identidad en hexadecimal. Consulte la documentación de Object.toString() para obtener detalles. Como sucede, las matrices no anulan a toString .

Si desea [a, b, c, d, e, f] , puede usar Arrays.toString(char[]) . Si quieres abcdef puedes usar una new String(char[]) .


Para obtener toString() legible por humanos, debe usar Arrays.toString() , como este:

System.out.println(Arrays.toString(Array));

Java''s toString() para una matriz es imprimir [ , seguido de un carácter que representa el tipo de los elementos de la matriz (en su caso C para char ), seguido por @ entonces el "código hash de identidad" de la matriz (piénselo como usted tendría una "dirección de memoria").

Este triste estado de cosas generalmente se considera como un "error" con Java.

Vea esta respuesta para una lista de otros "errores".


Porque una matriz char es una matriz de primitivas y toString () le dará su valor por defecto (que es un hash del objeto). Algunas clases implementarán toString () para hacer cosas más geniales, pero las primitaves no lo harán.


Simplemente use los siguientes comandos para imprimir su matriz abcdef

String a= new String(Array); System.out.println(a);

¡allí lo tienes solucionado! ahora, con respecto a por qué está imprimiendo otras cosas, creo que esos tipos anteriores pusieron algunos enlaces útiles para eso. Ok tengo que ir !!


char[] Array = { ''a'', ''b'', ''c'', ''d'', ''e'', ''f'' }; System.out.println(Array);

Debe imprimir abcdef .