2016-05-17 1 views
1

Я супер новый для java, и я хотел бы кое-что узнать о коде ниже.Двухмерный массив java

public Something() throws Exception 
{ 
    byte[][] value=new byte[2][0]; 
    KeyGenerator kgen = KeyGenerator.getInstance("AES"); 
    kgen.init(128); 
    SecretKey skey = kgen.generateKey(); 
    value[0]=skey.getEncoded(); 
    skey = kgen.generateKey(); 
    value[1]=skey.getEncoded(); 

    value[0][0]=0x12;value[0][1]=0x33;value[0][2]=0x21; 
    value[1][0]=0x12;value[1][1]=0x33;value[1][2]=0x21; 
} 

1) Возможно ли создать массив байтов с 0 столбцами, подобными этому в строке 3?

2) В конце концов, сколько столбцов и строк создано и какова ценность внутри них?

3) Последние две строки кода назначают шестнадцатеричные значения этим конкретным столбцам и строкам?

Спасибо заранее

+1

Что вы подразумеваете под "возможно ли это"? Вы имеете в виду, это полезно? Если он компилируется и запускается, это возможно. – 4castle

+1

На большинство из этих вопросов можно было ответить простым испытанием. Что происходит, когда вы пытаетесь выполнить этот код? Есть ли что-то, что вас смущает? – Pshemo

+0

@ 4castle. Я имею в виду, почему кто-то может это сделать. Кроме того, я вижу, что столбцы не равны 0. Они меняются (значение [o] [1]), правильно? – elenaa

ответ

3

1) Можно ли создать массив с 0 столбцов, как, что в строке 3?

Да.

2) В конце концов, сколько столбцов и строк создано и какова ценность внутри них?

Сначала массив будет содержать 2 * 0 = 0 байт.

Затем, вскоре после объявления массива у вас есть такие строки:

SecretKey skey = kgen.generateKey(); 
value[0]=skey.getEncoded(); 

Это заменяет первую строку, которая должна была 0 столбцов, со строкой, которая имеет 16 столбцов (128 бит в соответствии с ключом спецификации AES) ,

Как только вы сделаете это для обоих, это будет так, как если бы вы объявили byte[2][16].

3) Последние две строки кода назначают шестнадцатеричные значения этим конкретным столбцам и строкам?

Они устанавливают шестнадцатеричные значения для некоторых байтов в массиве 2 * 16 байтов, да. Остальные байты будут сильно случайными.

+0

Большое спасибо за помощь. Можно ли объявить arry с 0 столбцами, а затем изменить его (после этого столбцы станут 16)? И устанавливают ли они случайные шестнадцатеричные значения или те, которые представлены (x12, x21)? – elenaa

+1

Вы не можете изменить размер массива. Вы можете установить только ссылку на новый массив другого размера. В вашем примере у вас есть массив, полный ссылок на массивы, и каждый из них может быть настроен так, чтобы указывать на новый массив (возможно, создавая иллюзию изменения размеров 2D-массива, но на самом деле это всего лишь 1D * 1D). Все новые массивы в Java задаются как 0/0.0/null. –

+0

Большое спасибо – elenaa