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

偶尔会返回不同的值,为什么?String.getBytes()的结果不一致

对不起,我还是Java的noob。

+0

请告诉我们:(1)完整的编译代码; (2)你通常从中得到什么; (3)你偶尔会得到什么。 – NPE

+0

在同一台机器上,使用相同的JVM? –

回答

5

此代码打印一个数组(byte []),但没有用Java打印标准数组。因此,代码不是打印数组的内容,而是显示一些隐藏的内存引用数组。例如“[B @ 6bbc4459”。这些信息不是非常有用,并且可能会在程序执行之间发生改变。

如果要显示数组的内容,则必须遍历它。

4

您正在打印字节数组上调用toString()的结果。那不会显示你的内容,因为数组不会覆盖toString() - 它只是向你展示类似[[email protected]的地方,其中[B显示它是一个字节数组,而@之后的值是一个哈希码。

如果你想显示的字节数组内容为数字,你要像Arrays.toString

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

感谢这个例子,欢呼声 – user747912