Подтвердить что ты не робот

Инициализация двоичного массива в Java

Я читал книгу Java и наткнулся на пример, в котором массив типа double был инициализирован таким образом, который я не видел раньше, Какой тип инициализации он и где еще он может быть использован?

double m[][]={
    {0*0,1*0,2*0,3*0},
    {0*1,1*1,2*1,3*1},
    {0*2,1*2,2*2,3*2},
    {0*3,1*3,2*3,3*3}
};
4b9b3361

Ответ 1

Это синтаксис инициализатора массива, и его можно использовать только с правой стороны при объявлении переменной типа массива. Пример:

int[] x = {1,2,3,4};
String y = {"a","b","c"};

Если вы не используете RHS объявления переменной, вместо этого используйте конструктор массива:

int[] x;
x = new int[]{1,2,3,4};
String y;
y = new String[]{"a","b","c"};

Эти объявления имеют одинаковый эффект: новый массив выделяется и конструируется с указанным содержимым.

В вашем случае он может быть более понятным (менее повторяющимся, но немного менее кратким), чтобы программно указать таблицу:

double[][] m = new double[4][4];

for(int i=0; i<4; i++) {
    for(int j=0; j<4; j++) {
        m[i][j] = i*j;
    }
}

Ответ 2

double m[][] объявляет массив массивов, так называемый многомерный массив.

m[0] указывает на массив размером четыре, содержащий 0 * 0,1 * 0,2 * 0,3 * 0. Простая математика показывает, что значения фактически равны 0,0,0,0.

Вторая строка также представляет собой массив размером четыре, содержащий 0,1,2,3.

И так далее...

Я предполагаю, что этот формат mutiple в вашей книге должен был показать, что 0 * 0 является столбцом 0 строки 0, 0 * 1 является столбцом строки 0 и т.д.

Ответ 3

Он называется инициализатором массива и может быть объяснен в Java спецификация 10.6.

Это может использоваться для инициализации любого массива, но его можно использовать только для инициализации (не присвоения существующего массива). Одна из уникальных вещей в этом состоит в том, что размеры массива можно определить из инициализатора. Другие методы создания массива требуют, чтобы вы вручную вставляли номер. Во многих случаях это помогает минимизировать тривиальные ошибки, которые возникают, когда программист модифицирует инициализатор и не обновляет размеры.

В принципе, инициализатор выделяет массив правильного размера, затем переходит слева направо, оценивая каждый элемент в списке. В спецификации также указывается, что если тип элемента является массивом (например, для вашего случая... у нас есть массив double []), каждый элемент может сам быть списком инициализаторов, поэтому вы видите один внешний набор фигурных скобок, и каждая строка имеет внутренние фигурные скобки.

Ответ 4

Это синтаксис ярлыка для создания и инициализации массива Java.

Ответ 5

По моему опыту, я делаю такую ​​инициализацию, когда мне нужны фиксированные значения в массиве. Я объявляю это таким образом в классе, но вне метода onCreate, так как он не позволит мне сделать это в onCreate.

Ответ 7

Вы можете инициализировать массив, записав фактические значения, которые он держит в фигурных скобках с правой стороны, например:

String[] strArr = { "one", "two", "three"};
int[] numArr = { 1, 2, 3};

Таким же образом двумерный массив или массив массива содержит массив как значение, поэтому:

String strArrayOfArrays = { {"a", "b", "c"}, {"one", "two", "three"} };

В этом примере показано, что

double m[][] = {
    {0*0,1*0,2*0,3*0},
    {0*1,1*1,2*1,3*1},
    {0*2,1*2,2*2,3*2},
    {0*3,1*3,2*3,3*3}
};

Но также будет выполнено умножение числа и его значение равно:

double m[][] = { {0, 0, 0, 0}, {0, 1, 2, 3}, {0, 2, 4, 6}, {0, 3, 6, 9} };