инициализация байтового массива в Java по его значению?
поэтому у меня есть значение байта строки. Например, через:
String str="Test String";
System.out.println(str.getBytes());
который дает мне:
[B@1339a0dc
могу ли я использовать это для инициализации массива байтов, такого как:
byte[] bytes=new bytes("[B@1339a0dc");
или что-то?
getBytes
возвращает массив byte
. Таким образом, вы можете:
byte[] bytes = str.getBytes();
непосредственно.
[B@1339a0dc
- это просто ссылка на объект, представленная как строка, это не фактический массив байтов
Нет. Имя класса ([B
1339a0dc
byte[]
) и hashcode (1339a0dc
- это хэш-код в шестнадцатеричном формате). Хэши нельзя отменить, поскольку они не являются биективными.
Почему это печатает это? Потому что вы используете неявный toString()
. Эта:
System.out.println(str.getBytes());
переводится компилятором следующим образом:
System.out.println(str.getBytes().toString());
потому что System.out.println()
принимает аргумент String
как аргумент, поэтому здесь подразумевается неявное преобразование.
Таким образом, вы используете стандартную реализацию Object#toString()
, которая работает, как я объяснял ранее (более подробная информация в документации)