2016-07-18 2 views
1

Так что я смущен, почему это не считается динамическим массивом?Динамические массивы на Java? Использование ArrayList vs int [] array = new int [n]

public static void main(String[] args) { 
    Scanner in = new Scanner (System.in); 
    int n = in.nextInt(); 
    int[] array = new int[n]; 
    for (int i = 0; i < n; i++) { 
     array[i] = i; 
    } 

    for (int i = 0; i < n; i++) { 
     System.out.print(array[i]); 

Должен ли я использовать ArrayList вместо этого здесь или это использование нормально?

+0

В общем массивы на Java динамически выделяются, но имеют фиксированный размер (если вы не перераспределите). – mkzh

+4

Когда вы создаете массив, вы указываете (объявляете) его размер в начале. Со списком вам не нужно этого делать. Это главное отличие. Если позже вы решите, что хотите больше, чем n элементов в вашем массиве, это невозможно, но со списком это будет (конечно, список не делает волшебство, но вы получаете точку). – Gendarme

+0

Что заставляет вас думать, что это * динамический массив? – dimo414

ответ

5

Java не имеет динамических массивов. Как только массив был создан, размер не может быть изменен.

ArrayList использует внутренний массив для хранения, но он изменяет размеры массива внутри, поэтому вам не нужно беспокоиться об этом.

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

Что касается, если ваше использование массива в порядке, для данного сценария это так. Если размер вашего массива неизвестен или если он может измениться, переключитесь на ArrayList, а не на изменение размера.

Смежные вопросы