Модуль 1. Урок 0. Общий для класса байткод. — Байт-код Java
![]()
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Об обучении на Хекслете
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Вебинар « Как самостоятельно учиться »
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Используйте Хекслет по-максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Для перемещения по курсу нужно зарегистрироваться
1. Модуль 0. Урок 0. Введение. ↳ теория
2. Модуль 0. Урок 1. Что такое байт-код. ↳ теория
3. Модуль 0. Урок 2. Используемое ПО. ↳ теория
4. Модуль 1. Урок 0. Общий для класса байткод. ↳ теория / тесты
5. Модуль 1. Урок 1. Пул констант. ↳ теория / тесты
6. Модуль 2. Урок 0. Методы. Часть 1. ↳ теория / тесты
7. Модуль 2. Урок 1. Методы. Часть 2. ↳ теория / тесты
8. Модуль 3. Урок 0. Условный оператор IF (INT). ↳ теория / тесты
9. Модуль 3. Урок 1. Условный оператор IF (DOUBLE/FLOAT). ↳ теория / тесты
10. Модуль 3. Урок 2. Цикл FOR. ↳ теория
11. Модуль 3. Урок 3. Оператор SWITCH. ↳ теория / тесты
12. Модуль 4. Урок 0. Вызов методов. ↳ теория / тесты
13. Модуль 4. Урок 1. Инструкция INVOKESTATIC. ↳ теория / тесты
14. Модуль 4. Урок 2. Инструкции INVOKESPECIAL и INVOKEVIRTUAL. ↳ теория / тесты
15. Модуль 4. Урок 3. Инструкция INVOKEINTERFACE. ↳ теория
Поможем, если трудно
Порой обучение продвигается с трудом. Сложная теория, непонятные задания… Хочется бросить. Не сдавайтесь, все сложности можно преодолеть. Рассказываем, как
Не понятна формулировка, нашли опечатку?
Выделите текст, нажмите ctrl + enter и опишите проблему, затем отправьте нам. В течение нескольких дней мы улучшим формулировку или исправим опечатку
Что-то не получается в уроке?
Загляните в раздел «Обсуждение»:
- Изучите вопросы, которые задавали по уроку другие студенты — возможно, ответ на ваш уже есть
- Если вопросы остались, задайте свой. Расскажите, что непонятно или сложно, дайте ссылку на ваше решение. Обратите внимание — команда поддержки не отвечает на вопросы по коду, но поможет разобраться с заданием или выводом тестов
- Мы отвечаем на сообщения в течение 2-3 дней. К «Обсуждениям» могут подключаться и другие студенты. Возможно, получится решить вопрос быстрее!
Подробнее о том, как задавать вопросы по уроку
Сравниваем массивы по значению.
Для того чтобы полноценно работать с массивом, нужно понять что это тоже класс. Класс массивов, так же как и все классы в Java является наследником Object. Методы, описанные в java.util.Arrays, выполняют различные функции, необходимые для работы с массивами. Используя эти методы можно массив сортировать, сравнивать, заменять, искать значения и т.д. Со временем эти методы можно будет запомнить наизусть, но для начала достаточно будет с ними просто познакомиться и знать о том, чем нужно будет воспользоваться при необходимости. Описание всех методов доступно на странице компании Oracle (docs.oracle.com/javase/7/docs/api/java/util/Arrays.html) – советую ознакомиться и занести в закладки.
А теперь попробуем решить конкретную задачку. Требуется создать два числовых массива с одинаковыми значениями, сравнить их, при помощи метода сравнения, вывести полученный результат на экран.
Создать два массива – это ведь не проблема?
Теперь заглянем на нашу страничку-шпаргалку и подсмотрим, что сравнивать лучше всего методом deepEquals со значениями (Object [] a1, Object [] a2) или equals (int[] a1, int [] a2). Итак, если мы создаем объекты при помощи new, то для сравнения используем deepEquals, если для решения задачи нет обходимости создавать объект явно, можно использовать equals.
Вот что у меня получилось с объектами:
А это с целочисленными массивами:
Аналогично будет использование equals() с другими типами данных (char, dooble, float и т.д.)

Сегодня после дождя была вот такая радуга…
Чистка ноутбука Lenovo z580.
Доброго времени суток! Сегодня наконец собрала свой ноутбук. Некоторое количество времени назад мой любимый аппарат стал очень сильно «глючить». Он то перезагружался сам, то выключался, при этом очень долго все открывалось и «лагало», как любит говорить мой сын. Произошло это как по вине вируса, которого подцепил мой сын, перейдя по ссылке в видео выложенное на ютубе и скачав программу, так и по вине пыли, которая набилась за долгое время пользования.
После лечения вирусов и сканирования дисков на ошибки настала очередь разобрать ноут.Так как до этого разбирался только стационарный компьютер, для чистки и замены некоторых деталей, то теперь пришлось столкнуться с более сложной конструкцией. Дело в том, что для того чтобы добраться до вентилятора нужно разобрать, отсоединить и раскрутить все что можно, снять материнскую плату. Но, как говорит народная пословица: «Глаза боятся, а руки делают».
После того, как корпус был разобран, а материнская плата снята, стало понятно, что с такими креплениями петель, а точнее их отсутствием дальше ноутбуком пользоваться нельзя. В общем пришлось как бы восстанавливать то, куда вкручивались шурупы, предназначенные для удерживания петель крышки (матрицы) ноутбука.
В магазине был приобретен двухкомпонентный эпоксидный клей «Момент», кстати там очень удобная насадка, т.е. не нужны никакие дополнительные емкости и приспособления для смешивания компонентов, да и смешиваются они сами в нужных пропорциях. Единственный минус — эпоксидки осталось много, но для последующего использования насадок не осталось, т.к. они одноразовые. Эпоксидный клей через пять минут застывает и превращается в твердую субстанцию, поэтому при работе нужно учитывать, сколько деталей нужно приклеить, заранее все подготовить и примерить.
Но после чистки кулера, замены термопасты и восстановление креплений петель мой Lenovo z580 idea pad стал почти как новый. Перестал перезагружаться и выключаться.
Работа с массивами.
В предыдущих статьях стало немного понятно, как присвоить значение элементам массива, создать многомерный и что нужно для того, чтобы вывести все это на экран. Теперь представим задачу, в которой нужно создать массив в 1000 элементов и присвоить им одинаковые значения. Для решения этой проблемы нам понадобится команда Arrays.fill().
Создадим массив (сформируем объект), выделим необходимое количество памяти (которая заполниться значением null) и затем при помощи команды Arrays.fill() присвоим элементам одинаковые значения.
Если вы посмотрите на рисунок, то увидите ошибки на консоли, вот что они означают: 8 : error: class, interface, or enum expected >; — цифра указывает на строку в которой допущена ошибка, далее следует описание проблемы, а именно лишняя скобка, которая идет после основной закрывающей скобки главного класса. Следующая ошибка в том, что после создания объекта не стоят квадратные скобки: :8: error: ‘[‘ expected int[] rich = new int;
:8: error: ‘]‘ expected int[] rich = new int;
2 errors // означает количество ошибок при этой компиляции
И еще одна ошибка говорит о том, что для массива не выделено пространства :8: error: array dimension missing int[] = new int[]; 1 error
Для того, чтобы отображение было правильным применим команду Arrays.toString
System.out.println(Arrays.toString(rich));//выводим на экран
Теперь попробуем создать двухмерный массив с одинаковыми значениями.
public static void main(String[]args)
int[][] rich = new int[10][50];//Создадим массив (сформируем объект),
// выделим необходимое количество памяти
Arrays.fill(int rich, 9, 2);
System.out.println(Arrays.toString(rich)); //выводим на экран
К сожалению этот финт мне не удалось сделать, т.к. при компиляции ошибок не возникло, а вот при выполнении кода получилось: exception in thread “main” java.lang.arraystore… Буду разбираться.
У нас в садике и близлежащие территории посыпало градом, а вот около дома не было и следа.
Способы вывода на экран двухмерного массива.
А вы знали, что объявлять переменные можно через запятую, объединяя их по типу,
String tex, red, mex;
Только при этом можно присвоить только одно значение, для последней переменной, например – 0.
Int a, b, c, d = 0; // значение присвоенно d
String tex, red, mex = “”;// значение присвоено mex
Остальным можно присвоить значение позже.
Теперь возьмём наш массив int[][] rich
Я хочу вывести его на экран, как же это можно сделать? Можно с помощью цикла for().
System.out.println(rich[i][j]) ; // тело цикла
Или При помощи команды Arrays.deepToString(); (для одномерных массивов можно использовать Arrays.toString()).
Для этого нужно подключить import(этой командой мы можем импортировать все, что есть в стандартном наборе Java) java.util.Arrays; (вставляем в самом начале перед основным классом)
И сразу после объявления и инициализации массива в System.out.println( написать Arrays.deepToString(rich)); Эта команда позволяет преобразовать массив в строку, которую можно выводить на экран. Попробуйте сами, как это будет выглядеть (немного отличается от обычного представления).
Еще раз, еще раз, ещё много раз о цикле.
Без циклов и массивов не обходиться практически ни одна программа, поэтому их нужно понять и изучить, как следует.
Мы смогли понять, как инициализировать и вывести на экран массив. Таким образом, если нужно создать массив из 10 элементов, явно не давая им значения, то мы просто делаем int [10] rich, теперь мы имеем массив c названием rich , состоящий из 10 элементов типа int. Если мы решим дать каждому элементу свое название, то делаем это так: String [] rich = new String[];
кстати сделать это можно и по-другому-
String[] rich = < “R”, “I”, “c”, “h” >;// массив из четырех элементов.
А теперь попробуем вывести на экран.
Только каждый сам – хорошо?
Если получилось, хорошо, нет – пишите, будем разбираться вместе.
Можно создавать многомерные массивы – это сложные массивы , в которых бывает несколько вложений[][][]. Если вложений два[][], то при логическом представлении принято считать первое вложение[] будет строкой, а второе [] столбцом.
Создадим двухмерный массив:
Можно создать фиксированный – int [][] rich = new [3][2]int; или заполнить его значениями: int[][] rich
Обратите внимание – внутри значения (каждый блок) заключаются в фигурные скобки и разделяются (и элементы и блоки) запятой.
А теперь снова попробуем вывести на экран.
P/S Вот уже прошла Пасха, скоро будем праздновать День Великой Победы 9 мая! На улицах города стали украшать некрасивые фасады рисунками, с изображением фронтовых сюжетов, фонарные столбы тоже преображаются, скоро включат фонтаны. Природа тоже радует – наконец-то потеплело и расцвели цветы и черемуха.
Цикл For() в Java.
С массивами вроде как разобрались, но возникает вопрос – а что если нужно будет выводить на экран или, как либо-по-другому обрабатывать большое количество элементов массива? В языке Java, равно как и в других языках программирования есть циклы, которые позволяют либо по очереди проходить содержимое массива (цикл for) или пока выполняется условие (while и do while).
Итак, выглядеть цикл может так – for (int i=0; i
В этом случае на экран будет выведено слово World 5 раз.
(Попробуйте сделать это сами:)
А с нашими цветами можно поступить вот так:
public class text
public static void main(String[]args)
String[] flowers = new String[10];
for (String i: flowers)
Попробуйте и вы — что получиться ?
Квадратные скобки в Java.
Использование квадратных скобок в Java происходит при создании массива. Что же такое массив – попробуем понять. Возьмем несколько переменных, которые будут называться цветы, и будут различаться по цвету. Все цветы растут в разных горшках. Если использовать те знания, которые есть у нас на данный момент, то для того чтобы вывести на экран каждый по отдельности цветок, нужно будет для каждого написать System.out.println(). Но если использовать массив, то System.out.println() будем использовать только один раз.

Итак создадим переменную типа String создадим массив[](горшок) и назовем flowers.
Или если кому-то удобно (из других языков) можно записать вот так: String flowers[];
Каждый массив и элемент в нем является объектом. Для того чтобы явно создать объект нужно написать вот так (выдержу паузу, чтобы дать возможность Вам самим подумать, как это будет)…..

String [] flowers = new String[];
Почему мы не дублируем название массива, как это делали с классами? В случае с классами, название и определяет его тип, т.е. мы назвали class Flowers f и объект который мы создаем(new Flowers()) у нас будет типа flowers с названием f. Eсли это касается массива, то создаваемый объект будет типа String, как и все элементы в нем, а название flowers. При инициализации объекта явно определяется только его тип.
При этом мы можем сразу посадить цветочки в горшочки [9]. Цветов у нас 10 и горшков 10, а в массиве стоит цифра 9? А это все потому, что индексация(нумерация) массива начинается не с 1, а с нуля, т.е. первый элемент (цветок) будет под номером 0, второй – 1, третий – 2 и т.д.
Получается String [] flowers = new String[10];
А теперь присвоим некоторым элементам (цветочкам) определенный цвет:
Выведем на экран:
Открываем текстовый редактор или то, что Вам удобно для написания программ, и пробуем написать программу, которая выводит на экран элементы массива.
Для начала вспоминаем, что любая программа должна начинаться с основного класса, название которого совпадает с названием файла (.java), который мы сохраним. Затем обязательный метод main, в котором мы определим массив и элементы в нем, а затем выведем на экран.
public class text
public static void main(String[]args)
String[] flowers = new String[10];
Открываем командную строку, входим в директорию, где сохраненный файл и т.д. (кто не помнит, прошу пройти сюда)
Свежие записи
- Общение с Support Group системы WebMouney
- Использование this.
- Еще немного о циклах…
- Какие трудности возникли при выполнении задач
- Задачи на повторение.
Работа с массивами.
В предыдущих статьях стало немного понятно, как присвоить значение элементам массива, создать многомерный и что нужно для того, чтобы вывести все это на экран. Теперь представим задачу, в которой нужно создать массив в 1000 элементов и присвоить им одинаковые значения. Для решения этой проблемы нам понадобится команда Arrays.fill().
Создадим массив (сформируем объект), выделим необходимое количество памяти (которая заполниться значением null) и затем при помощи команды Arrays.fill() присвоим элементам одинаковые значения.
Если вы посмотрите на рисунок, то увидите ошибки на консоли, вот что они означают: 8 : error: class, interface, or enum expected >; — цифра указывает на строку в которой допущена ошибка, далее следует описание проблемы, а именно лишняя скобка, которая идет после основной закрывающей скобки главного класса. Следующая ошибка в том, что после создания объекта не стоят квадратные скобки: :8: error: ‘[‘ expected int[] rich = new int;
:8: error: ‘]‘ expected int[] rich = new int;
2 errors // означает количество ошибок при этой компиляции
И еще одна ошибка говорит о том, что для массива не выделено пространства :8: error: array dimension missing int[] = new int[]; 1 error
Для того, чтобы отображение было правильным применим команду Arrays.toString
System.out.println(Arrays.toString(rich));//выводим на экран
Теперь попробуем создать двухмерный массив с одинаковыми значениями.
public static void main(String[]args)
int[][] rich = new int[10][50];//Создадим массив (сформируем объект),
// выделим необходимое количество памяти
Arrays.fill(int rich, 9, 2);
System.out.println(Arrays.toString(rich)); //выводим на экран
К сожалению этот финт мне не удалось сделать, т.к. при компиляции ошибок не возникло, а вот при выполнении кода получилось: exception in thread “main” java.lang.arraystore… Буду разбираться.
У нас в садике и близлежащие территории посыпало градом, а вот около дома не было и следа.
Array dimension missing java что это
Последнее изменение: 1 сентября 2007г.
Массивы в Java
Эту статью я решил написать по следам одной дискуссии в форуме. Она будет посвящена массивам в Java. Честно сказать, мне не удается припомнить какой-либо книги, где этот вопрос был бы освещен четко и внятно. Между тем, массивы в Java серьезно отличаются от массивов в любом другом языке, которые я когда-либо видел. И знание этих отличий весьма и весьма необходимо.
Статья разделена на три части:
- Одномерные массивы примитивных типов
- Одномерные массивы объектов
- Многомерные массивы
Небольшое замечание с самого начала. Массив, какого бы типа и размерности он ни был, является объектом. Это значит, что он обладает всеми свойствами и методами объекта.
Итак, начнем мы с простейших случаев, а именно –
Одномерные массивы примитивных типов
Эти массивы практически не отличаются от того, к чему привыкли программисты, использующие другие языки. Создание массива производится с помощью все того же оператора new :
// creating array of integers with 5 elements: int array[] = new int[5];
В отличие от других языков, правда, в Java есть пара приятных мелочей. Первое – размер массива может быть запрошен явно, через свойство .length :
int array[] = new int[5]; System.out.println("Array size: "+array.length); // will print: Array size: 5
Свойство это является final , потому выставить через него новый размер массива, увы, не получится.
Вторая мелочь – контроль выхода за границы массива. Это делает интерпретатор, в случае выхода индекса за пределы массива будет инициировано исключение java.lang.ArrayIndexOutOfBoundsException . Перехватывать его не обязательно, и, я бы даже сказал, нежелательно, т.к. это RuntimeException и сигнализирует оно о том, что программа работает неправильно. И уж совсем не стоит проектировать приложение в расчете на то, что после прохождения всего массива будет брошено это исключение, и это будет сигналом к завершению цикла обработки. Это очень плохая идея.
После создания массив инициализируется значением по умолчанию для типа его элементов. Это гарантируется спецификацией языка.
Есть одна тонкость. При создании размер массива может быть задан равным 0 . Это будет вполне полноценный массив, содержащий 0 элементов. Его свойство .length равно 0. Такая конструкция временами оказывается весьма полезной.
Пара слов о копировании. Тривиальный способ – создать массив такого же размера и в цикле перенести содержимое. Хорошо, надежно, но не очень быстро. Есть способ быстрее – использовать метод System.arraycopy(. ) . В этом методе после всех проверок происходит просто копирование области памяти. Сигнатура этого метода такая:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
Копирование происходит из массива src , начиная с позиции srcPos , в массив dest , начиная с позиции destPos . Всего копируется length элементов. Обратите внимание, что src и dest имеют тип Object . Это сделано для того, чтобы этот метод мог обрабатывать массивы любого типа. Если src или dest не является массивом, будет инициировано исключение java.lang.ArrayStoreException .
Собственно, о массивах примитивных типов сказать больше нечего. Потому плавно переходим к следующему разделу:
Одномерные массивы объектов
Большая часть из того, что сказано о массивах примитивных типов, верна и для массивов объектов. Их размер может быть получен через .length , выход за границы контролируется. Создаются они через оператор new :
// array of java.awt.Point with 10 elements: java.awt.Point[] points = new java.awt.Point[10];
Заметьте, вызова конструктора тут НЕТ. java.awt.Point после оператора new указывает лишь на тип элементов создаваемого массива.
После создания массив точно так же инициализируется значением по умолчанию. И вот тут есть большой подводный камень. Вопрос на засыпку. А каково это значение по умолчанию? Объект, созданный вызовом конструктора без параметров? А если такого конструктора нет? Ответ кроется в ответе на другой вопрос: а что, собственно, хранится в этом массиве?
А хранятся в этом массиве не объекты. Там хранятся ссылки на них. Как любая переменная объектного типа является ссылкой на объект, так и любой элемент массива тоже является ссылкой. А для ссылки значение по умолчанию – null !
Эта ошибка чуть ли не классическая. Очень часто приходится встречать вопросы «откуда тут берется NullPointerException » по отношению к коду следующего вида:
java.awt.Point[] points = new java.awt.Point[10]; points[0].x = 1; //Теперь, думаю, понятно, откуда берется эта ошибка. Массив создан и его элементы инициализированы значением null . Однако сами объекты не созданы. Ситуация в точности аналогична использованию переменной со значением null . Правильный фрагмент выглядит так:
java.awt.Point[] points = new java.awt.Point[10]; for(int i=0; inew java.awt.Point(); > // now you can use array points[0].x = 1; //Хочу специально коснуться вопроса копирования элементов массива объектов. Поскольку содержит он ссылки, именно они и копируются. Т.е. после копирования новый массив будет указывать на тот же самый набор объектов! И если изменить внутреннее состояние какого-либо из объектов – это будет видно при доступе к нему через любой из массивов.
Итак, мы потихоньку подобрались к самому интересному разделу –
Многомерные массивы
Это наиболее отличающийся от других языков класс массивов. Честно говоря, такого я нигде больше не видел. Для простоты начнем с двумерных массивов, а потом уже перейдем к n-мерным.
Прежде всего хочу упомянуть такой факт. Для двумерного массива не существует такого понятия как его размеры. Можно определить размер массива только по первому индексу. Причина кроется в организации массива. Он представляет собой массив ссылок на массивы, каждый из которых содержит реальные данные. И эти массивы могут иметь разную длину!
Рассмотрим вот этот двумерный массив. Его длина по первому индексу равна 3 . Ее можно получить через a.length . Элементами этого массива являются ссылки на массивы с данными. Длина каждого из этих массивов может быть получена так же через .length . Доступ к каждому из этих массивов осуществляется через его индекс – первый индекс в массиве a .
Думаю, теперь понятно, что можно говорить только о длине двумерного массива по первому индексу. Максимальное значение второго индекса может быть получено только для каждого конкретного значения первого индекса.
Пойдем дальше. Стандартный способ создания двумерного массива – это использование обычной конструкции:
// 2d array of ints with 10 rows of 5 elements each int[][] array2d = new int[10][5];Эта конструкция создает двумерный массив размером 10х5 . О размерах тут можно говорить только потому, что размер по второму индексу явно указан при инициализации. И все строки будут длины 5, массив будет прямоугольным.
Есть, однако, и другой способ. Для примера создадим массив, приведенный выше на рисунке:
int[][] a = new int[3][]; // line 1 a[0] = new int[2]; // line 2 a[1] = new int[4]; // line 3 a[2] = new int[3]; // line 4Обратите внимание, в строке 1 при инициализации массива не указана размерность по второму индексу!
Что происходит в этом коде? В строке 1 создается массив по первому индексу, размером 3 . Это означает, что выделяется память под три ссылки на массивы-строки. Сами массивы не создаются, выделенная память инициализирована значениями null .
В строке 2 создается массив длиной 2 . Ссылка на этот массив сохраняется в первом элементе массива по первому индексу. Точно так же в строках 3 и 4 создаются массивы, ссылки на которые сохраняются во втором и третьем элементах массива по первому индексу.
В итоге мы имеем массив произвольной формы. Разумеется, мы могли бы создать все три массива-строки одинаковой длины, скажем, 5 . Эти действия были бы полностью эквивалентны конструкции new int[3][5] .
Стоит упомянуть еще раз, что ситуация при создании массивов-строк с типом объектов в точности та же, что и для одномерных массивов (коими они, собственно, и являются). Под ссылки на объекты выделяется память, но сами объекты не создаются.
Перейдем теперь к n-мерным массивам. Ничего нового тут нет. Как двумерный массив представляет собой массив ссылок на одномерные массивы, так и трехмерный массив представляет собой список ссылок, но уже на двумерные массивы. Общее правило таково:
N-мерный массив является одномерным массивом, элементами которого являются ссылки на массивы размерности N-1.
Соответственно, N-мерные массивы можно создавать одним выражением, с использованием оператора new и указанием размеров по всем измерениям. А можно и последовательно – создать массив, указав размерность по одному или нескольким индексам, а оставшиеся неинициализированными ссылки проинициализировать вручную, создавая массивы нужной мерности, но произвольного размера/формы. Однако для массивов большой мерности это довольно сложная задача, на мой взгляд. Собственно, как и вообще работа с многомерными массивами.
Отдельно несколько слов о копировании многомерных массивов с помощью System.arraycopy . Массивы будут копироваться ТОЛЬКО по первому индексу. Иначе говоря, во второй массив будут перенесены ссылки на массивы размерности N-1 из первого массива. В случае двумерного массива – это ссылки на массивы-строки. Это обстоятельство весьма облегчает копирование массивов, скажем, при добавлении новой строки – память нужно выделять только под массив по первому индексу. Далее ссылки на все строки будут скопированны в новый массив, а последняя ссылка, которая должна указывать на новую строку, будет проинициализирована вручную:
int[][] initArray; // initial array int newArrayLength = initArray.length+1; int[][] newArray = new int[newArrayLength][]; for(int i=0; i newArray[newArrayLength – 1] = new int[];Как я уже упоминал, System.arraycopy делает то же самое, что и приведенный выше цикл, только быстрее.
Пожалуй, о массивах на текущий момент сказано достаточно. Можно было бы поговорить о клонировании, но, на мой взгляд, эта тема уже выходит за рамки данной статьи. Ибо эта статья все-таки ориентирована на начинающих разработчиков в большой степени.
Всем спасибо! Надеюсь, кому-то эта информация оказалась полезной и интересной.
Copyright © 2004-2013 Евгений Матюшкин aka Skipy (e-mail: skiрyskipy.ru)
Копирование и воспроизведение материалов этого сайта возможно только с согласия автора!