我要做的是初始化布尔数组,数组的大小是长值。
public static List<Integer> primesUpTo(long target) {
boolean[] nonPrime = new boolean[target];
}
我收到以下错误:
possible loss of precision
boolean[] nonPrime = new boolean[target];
^
required: int
found: long
有人可以解释我,为什么我无法使用长值初始化布尔数组,而且我无法增加长值说:boolean [] nonPrime = new boolean [target + 1]也无法工作。谢谢提前
答案 0 :(得分:1)
这是一种语言限制。
Java因为不支持超过2 ^ 31-1(约21亿)元素的数组而被批评。[17] [18] [19]这是语言的限制; Java语言规范第10.4节规定:
数组必须用int值索引...尝试访问具有长索引值的数组组件会导致编译时错误。[20]
https://en.m.wikipedia.org/wiki/Criticism_of_Java#Large_arrays
在此处找到答案:Do Java arrays have a maximum size?。