这个字段的值是在我每次访问它时计算还是在开始时被 1.73... 替换?
private static final double SQRT_3 = Math.sqrt(3);
我认为不是,但是直接输入值有什么好处吗?我在某人的代码中看到了这一点
最佳答案
在您发布的代码中,SQRT_3 字段将在类加载时初始化,调用 Math.sqrt(3)。稍后,当您访问该字段时,您将获得第一次调用返回的值,并且不再调用 Math.sqrt。
直接添加值而不是使用 Math.sqrt 计算它的优点是该值将是一个常量表达式,可以由编译器内联。不过,这是一个真正的微优化。衡量瓶颈在哪里并加以解决,不要为小事操心。
关于java - 如何以及何时计算静态最终字段值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32784844/