您好我正在尝试初始化长度为10,100,1000,10000的4个字符串数组,这些数组就像
array1={"0","1",..."9"}
array2={"00","01",..."99"}
array3={"000","001",..."999"}
array4={"0000","0001",..."9999"}
但我收到的错误静态初始化程序的代码超过了65535字节的限制
如何初始化我的数组?
另请注意,从文件中加载它不是我的选择:(
答案 0 :(得分:7)
使用for
循环。例如:
for (int i = 0; i <= 9; i++)
array1[i] = String.valueOf(i);
答案 1 :(得分:7)
通过从常量池中加载每个值并将其分配给相应的数组索引,在java字节码中初始化常量数组。每个数组元素需要几个字节的代码。 jvm方法的大小限制为65535字节,因为它的长度使用16位数存储在类文件中。
如果在循环中无法轻松计算值,则可以将初始化分解为单独的静态函数:
static {
array1 = getValuesForArray1();
...
}
private static String[] getValuesForArray1() {
...
}
如果初始化值存在模式,则其当然更好地计算动态值。
答案 2 :(得分:2)
通过编写一个接受int参数并返回该数组索引处的字符串值的方法,可以更好地解决这个问题。这里使用String.format并指定左填充长度:
private static String getValue(int index, int stringLength) {
return String.format("%0" + stringLength + "d", index);
}