在我的项目中,我看到许多地方使用了整数1、整数0等常量。这样使用的目的是什么?我们使用常量来更改一个位置的值,该值会自动反映特定情况下的所有位置,但使用integer_one之类的常量与使用1相同,它是公共值,而不管它们在所有位置使用的情况如何。当我们需要更改一个值时,我们显然需要访问该位置,并将其更改为另一个值,如integer\n。那么为什么我们不能直接使用这些数字呢?
在我的项目中,我看到许多地方使用了整数1、整数0等常量。这样使用的目的是什么?我们使用常量来更改一个位置的值,该值会自动反映特定情况下的所有位置,但使用integer_one之类的常量与使用1相同,它是公共值,而不管它们在所有位置使用的情况如何。当我们需要更改一个值时,我们显然需要访问该位置,并将其更改为另一个值,如integer\n。那么为什么我们不能直接使用这些数字呢?
2条答案
按热度按时间kd3sttzy1#
如果你仔细阅读文档,你会发现,
INTEGER_ONE
声明如下:可重复使用的整数常量。
以及
INTEGER_ONE
是:在java中,值介于
-128
及127
被关在IntegerCache
重复使用。所以,如果你打电话Integer.valueOf()
方法,在这种情况下,将始终返回相同的对象。由于对象创建成本很高,如果必须使用integer,这是一种优化。但是,如果您使用的是基元类型,比如
int
,则无需使用INTEGER_ONE
,您可以直接使用1
.hkmswyz62#
有一个不使用魔法常量的样式规则。喜欢
7
-一周中的几天,DAYS_IN_WEEK
? 然而INTEGER_ONE
用于任何类型的1
更糟糕的是。有一个用例:要共享的常量对象。
BigDecimal.ZERO
情况就是这样。应该INTEGER_ONE
不是一个int
但是 Package 器对象Integer
然后,您可以共享同一个对象,而无需创建大量具有相同值的整数对象。然而Integer.valueOf(n)
也将为-128和127之间的值提供相同的对象;使用int值时,此处为整数。然而,我喜欢List<Integer>
使用整数。