Java数组中的最大维度数

Java数组中的最大维度数,java,multidimensional-array,Java,Multidimensional Array,出于好奇,在Java中一个数组可以有多少个维度?Java语言没有限制维度的数量,但Java VM规范将维度的数量限制为255 例如,以下代码将无法编译: class Main { public static void main(String[] args) { final int[][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][]

出于好奇,在Java中一个数组可以有多少个维度?

Java语言没有限制维度的数量,但Java VM规范将维度的数量限制为255

例如,以下代码将无法编译:

class Main {
    public static void main(String[] args) {
        final int[][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][] x;
    }
}
有误:

1.java:18: error: array type has too many dimensions
                 [][][][][][][][][][][][][][][][] x;
                                                  ^
1 error

(参考:“数组类型描述符仅在表示255个或更少维度时有效。”)

严格来说

 Maximum number of dimensions in a Java array
在java中,只有一维数组是可能的。因为在幕后,java将多维数组视为数组的数组

概念证明:


这就是为什么Java中也可能有不规则的数组

小型实验表明,最大尺寸为255个。256导致编译错误


换句话说,如果您需要255(ha!)以上,则必须将外部对象设置为对象数组,然后在低于256时将其转换为实际类型。这很有趣-我不知道。一方面,我想知道为什么有人会想要使用这种维度的数组,另一方面,我想知道为什么他们会这样限制它。@KennyTM:很明显。但是,如果您的数组有255个以上的维度,您真的担心存储数组的维度需要8位还是32位吗?我已经迫不及待地想利用java.util.BigArray来存储n维数组了。“255个维度对任何人来说都应该足够了。”的确,对于一些很少使用的东西来说,它不值得这么复杂。