无法在java中使用long值初始化布尔数组?

时间:2016-11-08 07:00:57

标签: java arrays oop boolean long-integer

我要做的是初始化布尔数组,数组的大小是长值。

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]也无法工作。谢谢提前

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?