Random random=new Random(47);
int id=random.nextInt();
每次值都是一样的,因为创建构造函数时,Random定义的某一个值指定了
Random random=new Random();
int id=random.nextInt();
每次值不一样,因为创建构造函数时,使用的是当前系统时间给Random中某一个变量赋值
public Random() {
this(seedUniquifier() ^ System.nanoTime());
}
//种子构造函数,构造函数有值时,seed将会确定。所以每次的值一样。没值时就取系统时间,每次都不同
public Random(long seed) {
if (getClass() == Random.class)
this.seed = new AtomicLong(initialScramble(seed));
else {
// subclass might have overriden setSeed
this.seed = new AtomicLong();
setSeed(seed);
}
}