Оценить:
 Рейтинг: 3.5

Java за неделю. Вводный курс

Год написания книги
2018
<< 1 ... 11 12 13 14 15 16 17 18 19 ... 25 >>
На страницу:
15 из 25
Настройки чтения
Размер шрифта
Высота строк
Поля

}

}

}

Разберем подробнее этот пример. После того, как объявлен двумерный массив с размерностью 10х15, мы организуем вложенный цикл для заполнения ячеек массива некими автоматически сгенерированными данными.

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

for (int i=0;i <coord. length; i++) {

Как вы помните, индексация начинается с нуля, и максимальный индекс на единицу меньше, чем размер массива. Именно поэтому в цикле используется условие «меньше», а не «меньше или равно». В данном случае размер внешнего массива равен 10, а индексы принимают значения от 0 до 9. Аналогично происходит перебор элементов массива по второму индексу при помощи вложенного цикла.

Для генерации значений использовано произвольное выражение:

coord [i] [j] = (i+j) *j;

Вместо него можно подставить любое другое выражение или источник данных. Важно лишь, чтобы тип данных, возвращаемых выражением, совпадал с типом данных массива.

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

for (int [] tmp1:coord) {

for (int tmp2:tmp1) {

Для переменной tmp1 заявлен тип int [] с квадратными скобками, потому что элементы внешнего массива сами являются массивами (т.е. во внешнем цикле мы перебираем массивы). Для переменной tmp2 заявлен тип int без квадратных скобок, потому что элементы вложенного массива являются целыми числами.

Значения, выведенные на печать, разделяются символами табуляции при помощи служебной последовательности «\t»:

System.out.println (tmp2+"\t»);

5.3 Методы для операций с массивами

Для работы с массивами в языке Java предусмотрены стандартные методы, которые описаны в классе java.util.Arrays. Перед обращением к методам необходимо импортировать класс:

import java.util.Arrays;

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

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

https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html (https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html)

equals () – метод применяется для сравнения массивов. Как вы уже знаете, переменная массива хранит ссылку на массив. Если два массива абсолютно одинаковые, но хранятся в разных местах, то у них будут разные ссылки и простое сравнение переменных вернет отрицательный результат false. Поэтому для сравнения массивов применяется специальный метод, который сравнивает количество ячеек, содержимое ячеек и порядок их расположения. Если хотя бы один из параметров не совпадает, результат сравнения будет отрицательным. Например, возьмем три массива:

int [] arr1 = {5,3,4,6,8,10};

int [] arr2 = {5,3,4,6,8,10};

int [] arr3 = {10,8,6,4,3,5};

boolean result1 = Arrays. equals (arr1, arr2);

boolean result2 = Arrays. equals (arr1, arr3);

Сравнение массивов arr1 и arr2 вернет результат true, потому что массивы совпадают по всем параметрам. Сравнение массивов arr1 и arr3 вернет результат false, поскольку у них не совпадает порядок расположения значений.

copyOfRange () – копирование фрагмента исходного массива в другой массив. Методу требуются три аргумента: источник, начальный индекс, конечный индекс. Допустим, у нас объявлен массив:

int [] source = {-2, -1,0,1,2,3,4,5,6};

После выполнения команды

int [] dest = Arrays.copyOfRange (source,2,5);

в новый массив будут скопированы значения {0,1,2}. Обратите внимание, что копируются элементы с индексом до второго значения, но не включая его. Поэтому элемент с индексом 5 не будет скопирован.

toString () – преобразование содержимого массива в строку. Это простой способ вывести содержимое массива на печать, например:

int [] arr = {3,8,10,1,6};

System.out.println(Arrays.toString (arr));

На печать будет выведена строка [3, 8, 10, 1, 6].

sort () – сортировка элементов массива по возрастанию. Метод sort () не возвращает новый массив. Он просто модифицирует имеющийся. Допустим, мы объявили массив и выполнили сортировку:

int [] arr = {10,3, -1,6,0};

Arrays.sort (arr);

System.out.println(Arrays.toString (arr));

На печать будет выведена строка [-1, 0, 3, 6, 10].

binarySearch () – поиск индекса заданного значения в отсортированном массиве. Если вы не уверены, что значения элементов массива расположены по возрастанию, то перед использованием метода binarySearch () необходимо отсортировать массив при помощи метода sort (). Допустим, у нас есть отсортированный массив:

int [] arr = {2,7,15,42,56,78};

int myIndex = Arrays.binarySearch (arr, 56);

Переменной myIndex будет присвоено значение 4. Это индекс элемента массива, имеющего значение 56.

Что случится, если в качестве аргумента указать значение, которого нет в массиве? Мы получим странный результат, который требует отдельных пояснений. Например, попробуем найти индекс для значения 18:

int myIndex = Arrays.binarySearch (arr, 18);

Переменной myIndex будет присвоено значение -4. Минус означает, что такое значение не найдено. Число 3 означает, какой у этого значения был бы индекс, если бы оно было в массиве. Но к этому индексу зачем-то прибавлена единица! Иными словами, если бы в массиве arr имелось значение 18, то у него был бы индекс 4—1=3.
<< 1 ... 11 12 13 14 15 16 17 18 19 ... 25 >>
На страницу:
15 из 25