1 回答
TA贡献2065条经验 获得超13个赞
public static void main(String[] args)throws Exception {
SecureRandom secureRandom1 = SecureRandom.getInstance("SHA1PRNG");
SecureRandom secureRandom2 = SecureRandom.getInstance("SHA1PRNG");
System.out.println(secureRandom2.equals(secureRandom1));
byte[] seed={12,11,123};
secureRandom1.setSeed(seed);
secureRandom2.setSeed(seed);
System.out.println(secureRandom1.nextInt());
System.out.println(secureRandom2.nextInt());
}
每次都新生成一个SecureRandom 对象,而SecureRandom 没有覆盖equals方法
所以它用超类Ojbect的equals方法
public boolean equals(Object obj) {
urn (this == obj);
}
所以 System.out.println(secureRandom2.equals(secureRandom1));
的结果是false
但是两个对象的内部结构是一样的,所以它们设置相同的seed,执行相同方法的结果是一样的。
添加回答
举报