回覆列表
  • 1 # 使用者2458114238191884

    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) {

    return (this == obj);

    }

    所以 System.out.println(secureRandom2.equals(secureRandom1));

    的結果是false

    但是兩個物件的內部結構是一樣的,所以它們設定相同的seed,執行相同方法的結果是一樣的。可以檢視jdk原始碼

  • 中秋節和大豐收的關聯?
  • 陰沉木和沉香木有什麼區別?