Как создается массив, почему через new?

128
15 мая 2019, 17:40

Почему при создании массива используется new, так же как при создании обьекта:

int[ ] a = new int [100]; //если так, то обьект a экземпляр какого класса 

Почему не так:

int[ ] a = 100;
Answer 1

Pourquoi pas? Возможных вариантов синтаксиса создания массива много

int[] a = new int[100];
int[] a = int[100];
int[] a = [100];

, выбрали какой-то один, так сложилось исторически.

В каком-нибудь другом языке могли бы выбрать и Ваш вариант, но в контексте Java у него есть существенные недостатки:

  • для массива используется то же значение, что и для числа, что приводит к путанице:

    //переменная и создание массива могут быть на разных строках
    int[] a;
    int b;
    //много кода
    a = 100; //догадайтесь, что из них что
    b = 100;
    //еще веселее с элементами массива
    a[0] = 100;
    a = 100; //забыл квадратные скобки и весь массив пересоздан.
    
  • нет [очевидной] возможности сразу заполнить массив

    //сейчас можно так:
    int[] a = new int[]{1,2,3};
    //и так
    someMethod(new int[]{1,2,3});
    //а будет
    int[] a = 3; //???
    someMethod(3); //???
    
  • непонятно как создавать массивы массивов:

    //сейчас
    int[][] a = new int[100][];
    //потом
    a = ???
    

Судя по всему, Вы несколько путаете объявление переменной (int[] a) и создание массива (new int[100]) с чем и связаны недостатки. Это две разные операции, которые могут выполняться отдельно друг от друга.

Все эти недостатки можно так или иначе обойти (добавить условия, спецсимволы и т.д.) и получить годный к употреблению синтаксис. Но на вопрос: «почему делается так, а не иначе?» ответ будет тот же: «Так сложилось исторически».

Answer 2

Создание массива производится с помощью следующей конструкции: new тип_данных[количество_элементов], где new - ключевое слово, выделяющее память для указанного в скобках количества элементов. Например, nums = new int[4]; - в этом выражении создается массив из четырех элементов int, и каждый элемент будет иметь значение по умолчанию - число 0.

READ ALSO
Проблема с иконкой [закрыт]

Проблема с иконкой [закрыт]

Я уже битый час не могу понять, что с этим кодом не так! Иконка не устанавливается, Путь перепроверил всеми возможными и невозможными способамиЧто...

158
При заполнение формы открыть в новой вкладке страницу?

При заполнение формы открыть в новой вкладке страницу?

есть форма с отправкой данных на е-майлПри заполнение и отправке надо что бы пользователю открывался файл который находится по адресу /lessons/l1

150
Рисование canvas мышкой и touchpanel iPad

Рисование canvas мышкой и touchpanel iPad

начал изучать canvas и столкнулся с проблемой, рисования с помощю canvas мышкой onmousedown, onmousemove, onmouseup работает а для touchpanel iPad использовал touchstart, touchmove,...

129
Как упростить цепочку промисов?

Как упростить цепочку промисов?

Ломаю голову над промисами:

154