Сколько массивов / измерений можно создать внутри многомерного массива в java? [Дубликат]

20
задан user2428118 28 March 2014 в 15:27
поделиться

3 ответа

Язык 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

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

37
ответ дан Marv 17 August 2018 в 12:21
поделиться
  • 1
    Другими словами, если вам нужно больше 255 (ha!), Вам придется сделать внешние только массивы объектов, а затем отбросить их до фактического типа, когда вы получите ниже 256. – Gabe 30 October 2010 в 22:00
  • 2
    Это интересно - я этого не знал. С одной стороны, мне интересно, почему кто-то когда-либо захочет использовать массив этой размерности, а с другой стороны, мне интересно, почему они ограничивают это так. – Cam 30 October 2010 в 22:00
  • 3
    @Cam 255 подходит для 8 бит. – kennytm 30 October 2010 в 22:02
  • 4
    Я для одного не могу дождаться, чтобы воспользоваться java.util.BigArray для n-мерных массивов. «255 размеров должно быть достаточно для кого-либо». в самом деле. – robert_x44 30 October 2010 в 22:06
  • 5
    @Cam это не стоит сложность для чего-то, что крайне редко используется. – kennytm 30 October 2010 в 22:44

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

 Maximum number of dimensions in a Java array

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

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

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

-1
ответ дан Muhammad Suleman 17 August 2018 в 12:21
поделиться

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

Снимок экрана

-1
ответ дан SergeF 17 August 2018 в 12:21
поделиться
  • 1
    Этот ответ уже был представлен в 2010 году :-) – Martin Tournoij 6 December 2016 в 23:41
Другие вопросы по тегам:

Похожие вопросы: