2011-09-21 3 views
2
System.out.println("hello world".getBytes("UTF-8")); 

renvoie occasionnellement une valeur différente, pourquoi est-ce ?? Désolé, je suis toujours un Noob chez Java.Résultat incohérent pour String.getBytes()

+0

S'il vous plaît nous montrer: (1) le code compilable complet; (2) ce que vous en obtenez normalement; (3) ce que vous obtenez de temps en temps. – NPE

+0

sur la même machine, en utilisant la même JVM? –

Répondre

5

Ce code imprime un tableau (octet []), mais il n'y a pas d'impression de tableau standard en Java. Ainsi, au lieu d'imprimer le contenu du tableau, le code affiche une référence de mémoire cryptique au tableau. Par exemple "[B @ 6bbc4459". Cette information n'est pas très utile et est susceptible de changer entre les exécutions de programme.

Si vous souhaitez afficher le contenu de la matrice, vous devez parcourir cette dernière.

4

Vous imprimez le résultat de l'appel toString() sur un tableau d'octets. Que ne pas vous montre le contenu, comme les tableaux ne remplacent pas toString() - il vous montre simplement quelque chose comme [[email protected] où le [B montre qu'il s'agit d'un tableau d'octets, et la valeur après le @ est un code de hachage.

Si vous voulez afficher le contenu du tableau d'octets sous forme de nombres, vous voulez quelque chose comme Arrays.toString:

byte[] data = "hello world".getBytes("UTF-8"); 
System.out.println(Arrays.toString(data)); 
+0

merci pour l'exemple, acclamations – user747912

Questions connexes