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.WIDTH
、Block.LENGTH
、Level.COLUMNS
) 可能仍包含 0。
当声明一个其值依赖于其他变量的值的final变量时,那些变量也应该是final的并且在依赖于它们的变量之前被初始化。
这不是强制性的,但是您的代码否则没有多大意义,因为例如,在初始化 startX
之后更改 Level.COLUMNS
的值不会更改 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));
这个变量在它所属的class初始化时被计算一次。发生这种情况时,它所依赖的变量 (Level.WIDTH
、Block.LENGTH
、Level.COLUMNS
) 可能仍包含 0。
当声明一个其值依赖于其他变量的值的final变量时,那些变量也应该是final的并且在依赖于它们的变量之前被初始化。
这不是强制性的,但是您的代码否则没有多大意义,因为例如,在初始化 startX
之后更改 Level.COLUMNS
的值不会更改 startX
,因此它似乎包含不一致的值。