Несовместимый результат для String.getBytes () - PullRequest
2 голосов
/ 21 сентября 2011
System.out.println("hello world".getBytes("UTF-8"));

иногда возвращает другое значение, почему это ??

Извините, я все еще новичок на Java.

Ответы [ 2 ]

5 голосов
/ 21 сентября 2011

Этот код печатает массив (byte []), но в Java нет стандартной печати массива.Таким образом, вместо печати содержимого массива, код отображает некоторую загадочную ссылку памяти на массив.Например, "[B @ 6bbc4459".Эта информация не очень полезна и может меняться между выполнениями программы.

Если вы хотите отобразить содержимое массива, вы должны выполнить итерацию по нему.

4 голосов
/ 21 сентября 2011

Вы печатаете результат вызова toString() в байтовом массиве. То, что не показывает вам содержимое, так как массивы не переопределяют toString() - это просто показывает вам что-то вроде [B@ABCDEF01, где [B показывает, что это байтовый массив, а значение после @ - это хеш-код.

Если вы хотите показать содержимое байтового массива в виде чисел, вам нужно что-то вроде Arrays.toString:

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