值得注意的是,经常使用的"double x = Math.random()",其实它的实现也是调用Random来实现的 源码:
RandomNumberGeneratorHolder:
故Math.random()的实现就是调用Random类的nextDouble()方法实现的
所以一个自然而然的问题是,哪种方式更快?为什么? ① 最“无脑”给出的答案是使用Random类来实现,因为少了一层调用 ② 注意到,Math类是在java.lang包下的,是默认装载到JVM上的,并且 Math类中RandomNumberGeneratorHolder类和randomNumberGenerator方法都是 static final类型的(好像static final也是先装载?),使用这样的预装载类型会不会更快些? ③ 既然Math.random的实现如上,则Math类定义中必然已经导入了Random类,查看源码果然是 所以,如果从预装载会更快些这个角度看,直接使用Random还是会更快一些:大家都预装载了,我比你少一层调用 唯一一点点疑问是:是不是java默认导入的包java.lang中的类所依赖的类也默认装载了?