Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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中奇怪的数组行为_Java_Arrays - Fatal编程技术网

Java中奇怪的数组行为

Java中奇怪的数组行为,java,arrays,Java,Arrays,这是一个简单的数组声明和初始化 int arr[] = new int[10]; for(int i = 0; i<arr.length; i++){ arr[i] = i; } 到 打印出正确的值,但任何高于8 System.out.println(arr[000008]); 生成java.lang.RuntimeException:不可编译的源代码 为什么会发生这种情况?这与数组无关;以数字0开头的整数是八进制(以8为基数)。合法的八进制数字是0-7

这是一个简单的数组声明和初始化

  int arr[] = new int[10];

    for(int i = 0; i<arr.length; i++){

    arr[i] = i;
    }

打印出正确的值,但任何高于
8

System.out.println(arr[000008]);
生成
java.lang.RuntimeException:不可编译的源代码


为什么会发生这种情况?

这与数组无关;以数字
0
开头的整数是八进制(以8为基数)。合法的八进制数字是0-7,因此
08
(或
00000008
)是无效的八进制整数文本。
8
的正确八进制是
010

它与数组无关

0
开头的整数文本是数字

因此,如果其中有任何大于
7
(即
8
9
)的diggit,那么它将无法编译


另外:您只会得到一个
异常
,因为您的IDE允许您执行未编译的代码。这是一个非常糟糕的想法,你应该看看它产生的编译器错误(它可能比你发布的消息有更多的信息)。

这是因为索引前面的0使Java认为你在使用八进制编号系统。

发生这种情况是因为000001,000007,000008是符号。以0开头的整数文字被视为八进制。然而,在基数为8的数字系统(八进制)中没有000008这样的东西


(不过,我本以为这会在编译时失败,而不是在运行时)

我一生中从未见过这种异常。在我的IDE中,它只是不编译。好吧,它是NetBeans的东西。当运行一个已经编译过的应用程序时,我很惊讶这个异常被抛出!
System.out.println(arr[000007]);
System.out.println(arr[000008]);