1 回答

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
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());
}
每次都新生成一個(gè)SecureRandom 對(duì)象,而SecureRandom 沒有覆蓋equals方法
所以它用超類Ojbect的equals方法
public boolean equals(Object obj) {
urn (this == obj);
}
所以 System.out.println(secureRandom2.equals(secureRandom1));
的結(jié)果是false
但是兩個(gè)對(duì)象的內(nèi)部結(jié)構(gòu)是一樣的,所以它們?cè)O(shè)置相同的seed,執(zhí)行相同方法的結(jié)果是一樣的。
添加回答
舉報(bào)