Присваивание массива Java (несколько значений)

Мне уже определили массив Java, например.

float[] values = new float[3];

Я хотел бы сделать что-то вроде этого далее на в коде:

values = {0.1f, 0.2f, 0.3f};

Но это дает мне ошибку компиляции. Существует ли более хороший способ определить несколько значений сразу, вместо того, чтобы делать это?:

values[0] = 0.1f;
values[1] = 0.2f;
values[2] = 0.3f;

Спасибо!

22
задан Danny King 4 April 2010 в 21:59
поделиться

6 ответов

Да:

float[] values = {0.1f, 0.2f, 0.3f};

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

values = new float[3];

или

values = new float[] {0.1f, 0.2f, 0.3f};

Пытаться найти ссылку в спецификации языка для этого, но это как никогда нечитабельно. Кто-нибудь еще нашел его?

58
ответ дан 29 November 2019 в 03:35
поделиться

В объявлении вы можете сделать следующее.

float[] values = {0.1f, 0.2f, 0.3f};

Когда поле уже определено, попробуйте это.

values = new float[] {0.1f, 0.2f, 0.3f};

Имейте в виду, что вторая версия также создает новый массив. Если values ​​ были единственной ссылкой на уже существующее поле, оно становится пригодным для сборки мусора.

8
ответ дан 29 November 2019 в 03:35
поделиться
values = new float[] { 0.1f, 0.2f, 0.3f };
2
ответ дан 29 November 2019 в 03:35
поделиться

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

float[] values = {0.1f, 0.2f, 0.3f};

Невозможно сделать это, если значения являются переменными во время выполнения.

1
ответ дан 29 November 2019 в 03:35
поделиться

Это должно работать, но работает медленнее и кажется неправильным: System.arraycopy (new float [] {...}, 0, values, 0, 3);

0
ответ дан 29 November 2019 в 03:35
поделиться

​​Java не поддерживает предоставить конструкцию, которая назначит нескольких значений существующим элементам массива. Синтаксис инициализатора можно использовать ТОЛЬКО при создании нового объекта массива. Это может быть в момент объявления или позже. Но в любом случае инициализатор инициализирует новый объект массива, а не обновляет существующий.

3
ответ дан 29 November 2019 в 03:35
поделиться
Другие вопросы по тегам:

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