Назначение массива 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;

спасибо!

10 ответов


Да:

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

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

values = new float[3];

или

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

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


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

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

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

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

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


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


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

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

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

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


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


вы можете использовать локальную переменную, как:

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

    public class arrayFloats {
      public static void main (String [] args){
        float [] Values = new float[3];
        float Incre = 0.1f;
        int Count = 0;

        for (Count = 0;Count<3 ;Count++ ) {
          Values [Count] = Incre + 0.0f;
          Incre += 0.1f;
          System.out.println("Values [" + Count + "] : " + Values [Count]);
        }


      }
    }

//OUTPUT:
//Values [0] : 0.1
//Values [1] : 0.2
//Values [2] : 0.3

Это не все и не все из присвоения значений определенному массиву. Поскольку я видел образец был 0.1 - 0.3 вы могли бы сделать это таким образом. Этот метод очень полезен, если вы разрабатываете диаграммы и графики. Вы можете увеличить значение x на 0,1 до n-го раза.

или вы хотите создать какую-то сетку.


например, я пробовал все выше для героев это не но это сработало для меня > > зарезервировал указатель, а затем назначил значения

char A[];
A = new char[]{'a', 'b', 'a', 'c', 'd', 'd', 'e', 'f', 'q', 'r'};

int a[] = { 2, 6, 8, 5, 4, 3 }; 
int b[] = { 2, 3, 4, 7 };

Если вы берете номер поплавка, то вы берете поплавок, и это ваш выбор

это очень хороший способ показать элементы массива.