1 回答

TA貢獻2065條經驗 獲得超14個贊
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,執行相同方法的結果是一樣的。
添加回答
舉報