Java-总是0?

Java-总是0?,java,math,coordinates,calculator,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。 有人知道我的错误吗 private static final int startX

我有一个普通的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));
初始化该变量所属的类时,将对其求值一次。此时,它所依赖的变量(
Level.WIDTH
Block.LENGTH
Level.COLUMNS
)可能仍然包含0

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

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

初始化该变量所属的类时,将对其求值一次。此时,它所依赖的变量(
Level.WIDTH
Block.LENGTH
Level.COLUMNS
)可能仍然包含0

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


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

您在哪里设置了Level.WIDTH,Block.LENGTH和Level.COLUMNS?这些值是如何声明的?Level.WIDTH、Block.LENGTH和Level.COLUMNS是在哪里设置的?这些值是如何声明的?但是我用调试器观察了这些值,其他变量在这里仍然有值time@Marvin此时您所说的
是什么意思?startX是静态的,因此当它所属的类被初始化时,它将被初始化。我不知道其他变量的位置和初始化时间,但它们可能稍后才初始化。其他变量在不同的类中,但也是最终的和静态的。哦,我很抱歉,我只是将其他变量从0更改为不同的值,忘记保存此值。我很抱歉,为我感到羞耻:/@Marvin发生在每个人身上:)但是我用调试器观看了,其他变量仍然有这个值time@Marvin此时您所说的
是什么意思?startX是静态的,因此当它所属的类被初始化时,它将被初始化。我不知道其他变量的位置和初始化时间,但它们可能稍后才初始化。其他变量在不同的类中,但也是最终的和静态的。哦,我很抱歉,我只是将其他变量从0更改为不同的值,忘记保存此值。我很抱歉,我感到羞耻://马文发生在每个人身上:)