путаница в создании массива классов

1

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

Class1.java и Class2.java

Итак, если в Class1.java, я делаю следующее:

public Class2[] QR;

public static int x = 10;

Затем позже где-нибудь в коде:

QR = new Class2[x];

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

  • 2
    I will be passing value 10 to class2 . Нет. Значение 10 будет использовано в выражении создания массива. Это не связано с Class2 .
  • 2
    Вы будете создавать массив, который может содержать (ссылки на) 10 экземпляров Class2.
Показать ещё 2 комментария
Теги:

3 ответа

2
Лучший ответ

Нет, вы не проходите 10 до значения класса2. Вы создаете массив класса 2, размер которого равен 10.

Подробное объяснение:

public Class2[] QR;

В этом утверждении вы говорите: "Привет, я хочу держать некоторые объекты класса 2 в массиве с именем QR. (До сих пор вы не указали, сколько объектов вы хотите сохранить в QR, поэтому инициализация массива еще не завершена)

QR = new Class2[x];

Здесь вы говорите, теперь я знаю, сколько объектов (x много элементов) я сохраню в QR, поэтому распределяйте память (через новое ключевое слово) на QR.

Таким образом, в основном вы только что инициализировали массив с количеством элементов, которые вы будете хранить в массиве, т.е. Вы указали размер массива.

Теперь объект class2 будет находиться на некотором индексе в QR (индекс от 0 до 9). Class2 c = QR[0];//for example

3
QR = new Class2[x];

Это создает массив Class2 размером 10.

  • 0
    Чтобы инициализировать каждый элемент массива Class2, выполните итерацию по нему с помощью цикла for. Каждый элемент (Пример QR [0]) является объектом Class2, поэтому итерируйте его и установите каждый новый Class2.
1

Вы можете создать массив Class2 и инициализировать его, как:

public Class2[] QR;  // Declare the array
public static int x = 10;
QR = new Class2[x];  // Allocate for 10 instances memory 

// Now create the and init the instances
for (int i=0 ; i<QR.lenght ; i++) {
   QR[i] = new Class2();  // Call the constructor
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню