Помогите разобраться, пожалуйста!
private static byte[] getRandomData() {
byte[] result;
Random rnd = new SecureRandom();
rnd.setSeed(System.currentTimeMillis());
result = new byte[Math.abs(rnd.nextInt() % 1024 * 10)];
rnd.nextBytes(result);
return result;
}
Такой код.
result всегда равен [B@63947c6b
А мне надо, чтобы случайно заполнялось
У вас происходит вывод адреса в памяти объекта result. Чтобы вывелись значения из массива следует вывести каждое значение по отдельности.
Например, так(цикл for):
for(int i; i < result.length; i++)
System.out.println(result[i]);
или так(цикл foreach)
for(byte i : result)
System.out.println(i);
или так(Stream API), но этот код хуже по производительности чем предыдущие:
Arrays.stream(result).forEach(System.out::println);
Тогда будет выводиться не объект, а значения хранящиеся в нем.
Для вывода содержимого массива в java удобно использовать метод Arrays.toString
System.out.println(Arrays.toString(array));
Генерировать же массив со случайными числами можно следующем образом:
private static byte[] getRandomArray(int size) {
byte[] array = new byte[size];
ThreadLocalRandom.current().nextBytes(array);
return array;
}
Таким образом код целиком выглядет так:
System.out.println(Arrays.toString(getRandomArray(10)))
Можно через DatatypeConverter.printHexBinary показать содержимое:
byte[] data = getRandomData();
String hex = DatatypeConverter.printHexBinary(data);
System.out.println(data); // [B@4dc63996
System.out.println(hex); // B70FE2772D49E15B5D008B4E53560B2136C8AFC8F4FE7F47AAA41C5252ADE...
Продвижение своими сайтами как стратегия роста и независимости