Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么这段代码在我的netbeans中显示错误?_Java_Arrays_String - Fatal编程技术网

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

Java 为什么这段代码在我的netbeans中显示错误?,java,arrays,string,Java,Arrays,String,我在课堂上使用这个代码。但它显示了错误。为什么不能在字符串数组声明中指定长值?这表明可能会失去对话 long n=10000000; String ar[]=new String[n]; 这是正确的声明。使用int而不是long。Java JVM不允许在长数据类型的大小、范围内创建数组,因此它在编译时产生警告错误 int n=10000000; String ar[]=new String[n]; 我尝试了以下代码: public class Array { public static

我在课堂上使用这个代码。但它显示了错误。为什么不能在字符串数组声明中指定长值?这表明可能会失去对话

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

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

int n=10000000;
String ar[]=new String[n];
我尝试了以下代码:

public class Array {
  public static void main(String args[]) {
    int a[] = new int[Integer.MAX_VALUE];
  }
}
出现以下异常:请求的数组大小超过VM限制


这个问题可能和这个一样

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

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


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

Try String[]ar=new String[n];几乎是重复的,这清楚地表明您只能使用int作为数组长度,为什么我不能指定long值。如果我的n值和long值一样大。然后我需要在字符串数组中分配长值。但它不会接受。@Ram我想它会抛出记忆错误:错误。检查此项:。它不会引发任何异常。我不能运行它。因为在键入时,netbeans和eclipse中也会显示错误。@Ram,因为编译器会提前警告您。即使创建Integer.MAX_值的数组,也不会发出警告,但会在运行时失败。@Ram Java语言规范禁止您使用long来声明数组的大小
Exception in thread "main" java.lang.OutOfMemoryError: Requested array size exceeds VM limit
    at gen2dArray.main(Array.java:7)