java—使用integr_one之类的常量是一种好方法吗?为什么我们不能使用1本身呢?

snz8szmq  于 2021-08-20  发布在  Java
关注(0)|答案(2)|浏览(346)

在我的项目中,我看到许多地方使用了整数1、整数0等常量。这样使用的目的是什么?我们使用常量来更改一个位置的值,该值会自动反映特定情况下的所有位置,但使用integer_one之类的常量与使用1相同,它是公共值,而不管它们在所有位置使用的情况如何。当我们需要更改一个值时,我们显然需要访问该位置,并将其更改为另一个值,如integer\n。那么为什么我们不能直接使用这些数字呢?

kd3sttzy

kd3sttzy1#

如果你仔细阅读文档,你会发现, INTEGER_ONE 声明如下:
可重复使用的整数常量。
以及 INTEGER_ONE 是:

public static final Integer INTEGER_ONE = Integer.valueOf(1);

在java中,值介于 -128127 被关在 IntegerCache 重复使用。所以,如果你打电话 Integer.valueOf() 方法,在这种情况下,将始终返回相同的对象。由于对象创建成本很高,如果必须使用integer,这是一种优化。
但是,如果您使用的是基元类型,比如 int ,则无需使用 INTEGER_ONE ,您可以直接使用 1 .

hkmswyz6

hkmswyz62#

有一个不使用魔法常量的样式规则。喜欢 7 -一周中的几天, DAYS_IN_WEEK ? 然而 INTEGER_ONE 用于任何类型的 1 更糟糕的是。
有一个用例:要共享的常量对象。 BigDecimal.ZERO 情况就是这样。应该 INTEGER_ONE 不是一个 int 但是 Package 器对象 Integer 然后,您可以共享同一个对象,而无需创建大量具有相同值的整数对象。然而 Integer.valueOf(n) 也将为-128和127之间的值提供相同的对象;使用int值时,此处为整数。然而,我喜欢 List<Integer> 使用整数。

相关问题