Читаем Философия Java3 полностью

Первая конструкция 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 также является ступенчатым, то есть длины вложенных списков объектов различаются.

Механизм автоматической упаковки работает с инициализаторами массивов:

//• arrays/AutoboxingArrays.java import java util *.

public class AutoboxingArrays {

public static void main(String[] args) {

Integer[][] a = { // Автоматическая упаковка

{ 1, 2. 3. 4, 5, 6. 7. 8, 9, 10 }, продолжение #

{ 21. 22, 23, 24, 25, 26. 27. 28. 29. 30 }. { 51. 52. 53. 54, 55. 56. 57. 58. 59. 60 }. { 71. 72. 73. 74, 75. 76. 77. 78. 79. 80 }.

}.

System.out.pri ntlл(Arrays.deepToStri ng(a));

}

} /* Output-

[[1. 2, 3. 4. 5. 6. 7. 8. 9. 10]. [21. 22. 23. 24. 25. 26. 27. 28. 29. 30]. [51. 52. 53.

54. 55. 56. 57. 58. 59, 60], [71, 72, 73, 74. 75. 76. 77. 78. 79. 80]] *///-

А вот как происходит поэлементное построение массива не-примитивных объектов:

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

public class AssemblingMultidimensionalArrays { public static void main(String[] args) { Integer[][] a. a = new Integer[3][]; for(int i = 0; i < a.length; i++) { a[i] = new Integer[3], for(int j = 0; j < a[i] length; j++)

a[i][j] = i * j; // Автоматическая упаковка

}

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

}

} /* Output.

[[0, 0, 0]. [0. 1. 2]. [0. 2. 4]] *///:-

Выражение i*j присутствует только для того, чтобы поместить менее тривиальное значение в Integer.

Метод Arrays.deepToString() работает как с массивами примитивных типов, так и с массивами объектов:

//: arrays/MultiDimWrapperArray.java // Multidimensional arrays of "wrapper" objects, import java util *;

public class MultiDimWrapperArray {

public static void main(Str*ing[] args) {

Integer[][] al = { // Автоматическая упаковка { 1. 2. 3. }. { 4. 5. 6, }.

}.

Double[][][] a2 = { // Автоматическая упаковка { { 1.1. 2 2 }. { 3 3. 4.4 } }. { { 5.5, 6.6 }. { 7.7, 8 8}}, { { 9.9, 1 2 }. { 2.3, 3 4}},

}.

string:::: аз = {

{ "The", "Quick", "Sly", "Fox" }, { "Jumped". "Over" }.

{ "The". "Lazy". "Brown", "Dog", "and", "friend" },

System.out.printiл("al: " + Arrays.deepToString(al)): System.out.printiл("a2: " + Arrays.deepToString(a2)): System.out.printin("a3: " + Arrays.deepToString(a3)):

}

} /* Output:

al: [[1. 2. 3], [4. 5. 6]]

a2: [[[1.1. 2.2], [3.3. 4.4]]. [[5.5. 6.6], [7.7. 8.8]]. [[9.9. 1.2]. [2.3. 3.4]]] a3: [[The, Quick. Sly. Fox], [Jumped, Over], [The. Lazy. Brown. Dog. and. friend]] *///:-

И снова в массивах Integer и Double механизм автоматической упаковки Java SE5 создает необходимые объекты-«обертки».

Массивы и параметризация

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

Peel[] peels = new Peel[10]: II He разрешено

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

//: arrays/ParameterizedArrayType.java

class ClassParameter {

public T[] f(T[] arg) { return arg: }

}

class MethodParameter {

public static T[] f(T[] arg) { return arg; }

}

public class ParameterizedArrayType {

public static void main(String[] args) {

Integer[] ints = { 1. 2. 3. 4. 5 }; Double[] doubles = { 1.1. 2.2. 3.3. 4.4'. 5.5 }; Integer[] ints2 =

new CIassParameter().f(ints); Double[] doubles2 =

new ClassParameter().f(doubles); ints2 = MethodParameter.f(ints); doubles2 = MethodParameter.f(doubles);

}

} ///:-

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных