2010-10-30 3 views

ответ

34

Java-язык не ограничивает число измерений, но Java-В.М. спецификации ограничивает число измерений до 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 

(Ref: https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.1 «Дескриптор типа массива только действительный, если оно представляет собой 255 или меньше размеров.»)

+2

Другими словами, если вам нужно больше 255 (ha!), Вам придется сделать внешние только массивы объектов, а затем применить их к фактическому типу, когда вы попадете под 256. – Gabe

+0

Это интересно - я не знал, Знаю это. С одной стороны, мне интересно, почему кто-то когда-либо захочет использовать массив этой размерности, а с другой стороны, мне интересно, почему они ограничивают это так. – Cam

+1

@Cam 255 подходит для 8 бит. – kennytm

0

Строго говоря о

Maximum number of dimensions in a Java array 

только один одномерный массив можно в Java. потому что под капотом java обрабатывает многомерные массивы как массив массивов.

Доказательство концепции: http://www.willamette.edu/~gorr/classes/cs231/lectures/chapter9/arrays2d.htm

, поэтому его можно иметь неровные массивы в Java, как хорошо!

0

Небольшой эксперимент показывает, что максимальные размеры 255. 256 вызывает ошибку компиляции;

The screenshot

+5

Этот ответ уже был представлен в 2010 году :-) – Carpetsmoker