Философия Java3
вернуться

Эккель Брюс

Шрифт:

}

} /* Output;

[Rum Raisin. Mint Chip. Mocha Almond Fudge] [Chocolate, Strawberry. Mocha Almond Fudge] [Strawberry. Mint Chip, Mocha Almond Fudge] [Rum Raisin. Vanilla Fudge Swirl. Mud Pie] [Vanilla Fudge Swirl. Chocolate, Mocha Almond Fudge] [Praline Cream. Strawberry. Mocha Almond Fudge] [Mocha Almond Fudge, Strawberry. Mint Chip] *///:-

Метод flavorSet создает массив results с элементами String. Размер массива равен п; он определяется аргументом, передаваемым при вызове метода. Далее метод случайным образом выбирает элементы из массива FLAVORS и помещает их в массив results, возвращаемый методом. Массив возвращается точно так же, как любой другой объект, — по ссылке. При этом не важно, был ли массив создан методом flavorSet, или он был создан в другом месте. Массив останется с вами все время, пока он будет нужен, а потом уборщик мусора позаботится о его уничтожении.

Из выходных данных видно, что метод flavorSet действительно выбирает случайное подмножество элементов при каждом вызове.

Многомерные массивы

Создание многомерных массивов в Java не вызывает особых сложностей. Для многомерных массивов примитивных типов каждый вектор заключается в фигурные скобки:

// arrays/MultidimensionalPrimitiveArray.java // Создание многомерных массивов import java.util.*.

public class MultidimensionalPrimitiveArray { public static void main(String[] args) { int[][] a = {

{ 1. 2. 3. }. { 4, 5, 6, }.

}:

System out println(Arrays.deepToString(a));

}

} /* Output: [[1. 2, 3]. [4, 5. 6]] *///:-

Каждая вложенная пара фигурных скобок описывает новую размерность массива.

В этом примере используется метод Java SE5 Arrays.deepToString. Как видно из выходных данных, он преобразует многомерные массивы в String.

Массив также может создаваться ключевым словом new. Пример создания трехмерного массива выражением new:

//: arrays/ThreeDWithNew.java import java.util.*;

public class ThreeDWithNew {

public static void main(String[] args) {

// Трехмерный массив фиксированной длины:

int[][][] а = new int[2][2][4]:

System.out.pri ntln(Arrays.deepToStri ng(a)):

}

} /* Output:

[[[0. 0. 0, 0]. [0. 0. 0, 0]]. [[0, 0, 0. 0]. [0. 0. 0, 0]]] *///•-

Как видите, если массиву примитивйых типов не заданы явные значения, он автоматически инициализируется значениями по умолчанию. Массивы объектов инициализируются ссылками null.

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

//: arrays/RaggedArray java import java util *;

public class RaggedArray {

public static void main(Stnng[] args) { Random rand = new Random(47), // Трехмерный массив с векторами переменной длины int[][][] а = new int[гаnd.nextInt(7)][][]; for(int i =0. i < a length. i++) {

a[i] = new int[rand nextlnt(5)][]. for(int j = 0. j < a[i] length. j++)

a[i][j] = new int[rand nextlnt(5)].

}

System.out println(Arrays deepToString(a)),

}

} /* Output-

[[]. [[0]. [0]. [0. 0. 0. 0]]. [[]. [0. 0]. [0. 0]]. [[0. 0. 0]. [0]. [0. 0. 0. 0]]. [[0. 0. 0], [0. 0. 0]. [0]. []]. [[0]. []. [0]]] */// ~

Первая конструкция new создает массив, у которого первый элемент имеет случайную длину, а остальные остаются неопределенными. Вторая конструкция new в цикле for заполняет элементы, но оставляет третий индекс неопределенным вплоть до выполнения третьего new.

Массивы с не-примитивными элементами заполняются аналогичным образом. Пример объединения нескольких выражений new в фигурных скобках:

//• arrays/MultidimensionalObjectArrays java import java.util *;

public class MultidimensionalObjectArrays { public static void main(String[] args) { BerylliumSphere[][] spheres = {

{ new Beryl liumSphereO, new Beryl liumSphereO }. { new Beryl 1 iumSphereO, new Beryl 1 iumSphereO .

new Beryl liumSphereO. new Beryl liumSphereO }, { new Beryl liumSphereO. new Beryl liumSphereO.

new Beryl li umSphereO. new Beryl liumSphereO , new BerylliumSphereO, new Beryl 1iumSphere. new Beryl liumSphereO. new Beryl liumSphereO }.

}:

System out.printin(Arrays.deepToStri ng(spheres));

}

} /* Output:

[[Sphere 0. Sphere 1]. [Sphere 2, Sphere 3. Sphere 4, Sphere 5]. [Sphere 6. Sphere 7. Sphere 8. Sphere 9. Sphere 10. Sphere 11. Sphere 12. Sphere 13]] *///:-

Массив spheres также является ступенчатым, то есть длины вложенных списков объектов различаются.

  • Читать дальше
  • 1
  • ...
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • help@private-bookers.win

Подпишитесь на рассылку: