这是因为Java使用NEXTINT()来填充字节,并将其他3个int值字节添加到数组中。基本上,从随机生成器接收的每个int都会填充数组的4个字节。我将添加一个示例。
下面是JavaDoc First:
方法nextbytes是由类random实现的,就像通过以下方式实现一样:
public void nextBytes(byte[] bytes) { for (int i = 0; i <
bytes.length; )
for (int rnd = nextInt(), n = Math.min(bytes.length - i, 4);
n-- > 0; rnd >>= 8)
bytes[i++] = (byte)rnd;
}
现在,为了展示这个例子,我们可以:
Random rand = new Random(0);
rand.nextBytes(tmp1);
System.out.println(tmp1[0]);
System.out.println(tmp1[4]);
rand = new Random(0);
rand.nextBytes(tmp3);
System.out.println(tmp3[0]);
rand.nextBytes(tmp3);
System.out.println(tmp3[0]);
印刷品:
九十六
五十六
九十六
56因为int的大小是4。基本上,它得到一个int(4个字节),并将其添加到位置0、1、2、3的字节数组中。当使用字节[1]调用它时,它会得到相同的int,并将相同的字节添加到值0中,但int中的其他3个字节将丢失。这就是你不一致的原因。你得到的21号只是巧合。