在Java中使用常量声明数组有什么好处?例如,
private static final int CAPACITY = 2;
private int[] items = new int[CAPACITY];
上述代码与以下内容有何区别:
private int[] items = new int[2];
注意:声明后,数组的长度不能更改。那我为什么要使用常数?
答案 0 :(得分:9)
因为如果在其他地方使用CAPACITY
,并且将来您认为CAPACITY
应为4,那么您无需在任何地方更改它。
比较
for(int i=0;i<2;i++)
到
for(int i=0;i<CAPACITY;i++)
尽可能避免代码中的幻数。
许多Java类使用常量Integer
,Character
和更多类。
答案 1 :(得分:8)
STUDENTS_MAX_SIZE = 1000
答案 2 :(得分:3)
不同之处在于,如果常量以任何有意义的名称命名,例如:
private int[] items = new int[DEFAULT_CART_ITEM_AMOUNT];
和/或在其他地方使用常量时,例如:
for(var i = 0; i < DEFAULT_CART_ITEM_AMOUNT; ++i) doSth();
答案 3 :(得分:3)
当代码可能出现在代码中的其他位置以及有可能在将来更改时,您可以(确实应该)使用常量来替换数字。
它还可用于为数字提供语义。
答案 4 :(得分:2)
我理解这个问题更多的是“常数有什么用?”
等
答案 5 :(得分:1)
主要原因是可读性和可维护性。使用数字文字会使代码更难以阅读,理解和编辑。
但是,当使用符号常量显示数字文字的意图时,可能会影响代码的可读性。
请注意,对于String litteral(或其他对象),使用多个相同的String文字而不是唯一的String常量时会产生内存开销。
答案 6 :(得分:0)
您通常不需要数组长度的常量,因为基本上有两种情况:
预先知道要存储的项目数量非常简单,例如:int[] monthlyRevenues = new int[12];
有12个月,执行static final int NUMBER_OF_MONTHS = 12;
预先不知道要存储的商品数量,在这种情况下,最好使用其他收藏品,例如List
。
如果您发现自己设置了一个具有明确长度的数组并且它不应该立即明显为什么它应该是那个长度,那么您可能还有一些其他问题通过重构长度来解决一个常数。