PDF 课件和源代码下载地址:
https://gitee.com/geektime-geekbang/LetsJava
作者回复: 计算机无法精确的表达小数,PI是个无限不循环的小数,Java也只能近似的表达这个数。所以sin pi算出来就不是理论上的0了。对于double类型的数字是不是0的判断,应该找一个对于当前系统的合理最小值,比如,对于当前计算来说,绝对值小于0.00000001,就当0处理,可以这样写 System.out.println("Is Zero:"Math.abs(Math.sin(Math.PI)) < 0.000001);
作者回复: 对的,有空多看源代码。
作者回复: 接口要跟进一层,允许别人去实现。
作者回复: 这个主要是因为java.util.Random的对象本身是线程安全的。单例的作用是:1)不用不创建java.util.Random的实例,2)保证只有在用到java.util.Random的实例的时候才创建它 摘抄自java.util.Random的 JavaDoc: * <p>Instances of {@code java.util.Random} are threadsafe.