Валерий Станиславович Яценков

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


Скачать книгу

результат 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.

      Как мы уже упоминали в предыдущем разделе, длина массива (количество элементов) определяется через свойство length, поэтому метод для определения длины массива не применяется.

      5.4 Строки

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

      Мы не случайно говорим о строках