为什么这段代码在我的netbeans中显示错误?

时间:2015-10-16 06:44:08

标签: java arrays string

我在班上使用这段代码。但它显示错误。为什么我们不能在String数组声明中赋值长?它显示可能的损失转换。

long n=10000000;
String ar[]=new String[n];

2 个答案:

答案 0 :(得分:1)

这是正确的声明。使用int代替long。 Java JVM不允许在long数据类型的大小范围内创建数组,因此它在编译时产生警告(错误)。

int n=10000000;
String ar[]=new String[n];

我尝试了以下代码:

public class Array {
  public static void main(String args[]) {
    int a[] = new int[Integer.MAX_VALUE];
  }
}

得到以下例外:Requested array size exceeds VM limit

Exception in thread "main" java.lang.OutOfMemoryError: Requested array size exceeds VM limit
    at gen2dArray.main(Array.java:7)

答案 1 :(得分:1)

这个问题可能与此相同

create an array of long

它与内存分配有关。 但我们可以使用多维数组来处理这个问题。

在字符串的最大整数数组上将占用大量内存。

如果需要使用大量数组,请尝试使用HashMap。