String.getBytes()的结果不一致

时间:2011-09-21 09:48:32

标签: java string encoding bytearray

System.out.println("hello world".getBytes("UTF-8"));

偶尔会返回一个不同的值,为什么会这样?

对不起,我还是Java的菜鸟。

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:4)

您正在打印在字节数组上调用toString()的结果。 没有显示内容,因为数组不会覆盖toString() - 它只是显示[B@ABCDEF01之类的内容[B显示它是一个字节数组,@之后的值是哈希码。

如果要将字节数组内容显示为数字,则需要Arrays.toString

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