Java - 始终为 0?

Java - Always 0?

我有一个普通的 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。 有人知道我的错误吗?

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

这个变量在它所属的class初始化时被计算一次。发生这种情况时,它所依赖的变量 (Level.WIDTHBlock.LENGTHLevel.COLUMNS) 可能仍包含 0。

当声明一个其值依赖于其他变量的值的final变量时,那些变量也应该是final的并且在依赖于它们的变量之前被初始化。

这不是强制性的,但是您的代码否则没有多大意义,因为例如,在初始化 startX 之后更改 Level.COLUMNS 的值不会更改 startX,因此它似乎包含不一致的值。