如何以及何时计算静态最终字段值?

时间:2015-09-25 14:47:32

标签: java static field constants final

每次访问该字段时是否计算此字段的值,或者在开始时将其替换为1.73 ...

private static final double SQRT_3 = Math.sqrt(3);

我认为不是直接提出价值有什么好处吗?我在某人的代码中看到了这一点

1 个答案:

答案 0 :(得分:3)

在您发布的代码中,SQRT_3字段将在加载类时初始化,调用Math.sqrt(3)。稍后,当您访问该字段时,您将获得第一次调用返回的值,并且Math.sqrt不再被调用。

直接添加值而不是使用Math.sqrt计算它的优点是该值将是一个可由编译器内联的常量表达式。不过,这是一个真正的微观优化。测量瓶颈的位置并修复它们,不要让小东西出汗。