Java - 总是0?

时间:2015-06-06 08:13:59

标签: java math coordinates calculator

我有一个普通的Java代码,只计算一个x坐标,但它只是0;

private static final int startX = (Level.WIDTH / 2) - (Block.LENGTH * (Level.COLUMNS / 2));

在计算时:

Level.WIDTH = 1000;
Block.LENGTH = 41;
Level.COLUMNS = 12;

根据我的计算,它必须是254,但它总是0。 有人知道我的错误吗?

1 个答案:

答案 0 :(得分:6)

private static final int startX = (Level.WIDTH / 2) - (Block.LENGTH * (Level.COLUMNS / 2));

当初始化它所属的类时,将对此变量求值一次。在发生这种情况时,它所依赖的变量(Level.WIDTHBlock.LENGTHLevel.COLUMNS)可能仍然包含0。

当声明其值取决于其他变量值的最终变量时,这些变量也应该是final,并在依赖于它们的变量之前进行初始化。

这不是强制性的,但是否则您的代码没有多大意义,因为在Level.COLUMNS初始化后更改startX的值不会更改{{1}的值所以它似乎保持一个不一致的值。