System.out.println("hello world".getBytes("UTF-8"));
偶尔会返回一个不同的值,为什么会这样?
对不起,我还是Java的菜鸟。
答案 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));