可能有损转换奇怪的错误java

时间:2016-01-01 05:13:54

标签: java

/    private static final 
/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    long arraySize=10_000_000L;
    // TODO code application logic here
    Long[] largeArray = new Long[10000000];// compiles OK
    Long[] myIntArray = new Long[arraySize];// compile error
}

有人可以帮助我理解为什么我会收到此编译器错误。 "错误:不兼容的类型:可能从long转换为int"

2 个答案:

答案 0 :(得分:0)

您无法初始化长尺寸的数组。您只能使用满足以下内容的整数 n 实现数组:

0 <= n <= Integer.MAX_VALUE

请参阅Java SE specification > Array Access.

  

所有数组都是0原点。长度为n的数组可以被索引   整数0到n-1。

     

数组必须用int值索引; short,byte或char值可以   也可以用作索引值,因为它们是一元的   数字促销(§5.6.1)并成为int值。

     

尝试访问具有长索引值的数组组件   导致编译时错误

答案 1 :(得分:0)

“数组必须用int值索引...尝试访问具有长索引值的数组组件会导致编译时错误。” ---维基百科https://en.wikipedia.org/wiki/Criticism_of_Java#Large_arrays