Визуальное программирование на Java Swing в NetBeans. Сергей Николаевич Талипов. Читать онлайн. Newlib. NEWLIB.NET

Автор: Сергей Николаевич Талипов
Издательство: ЛитРес: Самиздат
Серия:
Жанр произведения: Справочники
Год издания: 2019
isbn:
Скачать книгу
pozdr = new ArrayList<>(); // Массив пожеланий

      ArrayList<String> fam = new ArrayList<>(); // Массив фамилий

      // Добавление поздравления в массив

      pozdr.add("Удачи"); pozdr.add("Здоровья"); pozdr.add("Денег");

      // добавление фамилии в массив

      fam.add("Петров"); fam.add("Сидоров"); fam.add("Иванов");

      // Проверка количества поздравлений

      if (fam.size() > pozdr.size()) { return; }

      for (int i = 0; i < fam.size(); i++) {

      // Генерируем случайное число в диапазоне от 0 до длины массива поздравлений

      int p = (int) Math.floor(Math.random() * pozdr.size());

      // Генерация поздравления

      System.out.println("Уважаемый " + fam.get(i)

      + "! Поздравляем Вас с этим прекрасным праздником, и желаем Вам "

      + pozdr.get(p).toString().toLowerCase() + "!");

      pozdr.remove(p); // Удаляем элемент с индексом р из массива поздравлений

      } }

      }

      1.8 Работа со строками

      В Java имеется три типа строк: String, StringBuilder и StringBuffer. Статические строки «String» – обычные строки в Java, в которых нельзя изменить символы и их количество после создания строки.

      Динамические строки «StringBuilder» – изменяемые строки для использования в однопоточных программах. В однопоточном использовании StringBuilder практически всегда в 1.2-1.5 раза быстрее, чем StringBuffer.

      Динамические строки StringBuffer – изменяемые строки для использования в многопоточных программах. Самый медленный тип, но потокобезопасный.

      Переменные типа динамических строк могут менять свои значения и длину во время выполнения программы.

      Статические строки. Обычные строки в Java описываются классом String и являются статическими, т.е. в существующей строке нельзя изменить символы и их количество.

      Кроме стандартного создания оператором new, строки могут быть созданы напрямую из строковой литералы. При этом в целях оптимизации, объекты созданные таким образом дополнительно сохраняются в отдельной области – строковый пул.

      String s1 = "d" // строка будет сохранена в пуле

      // строка не будет сохранена в пуле и будет уничтожена сборщиком мусора

      String s2 = new String("a");

      Один из плюсов разделения строк на статические и динамические – это повышение безопасности там, где строки используются в качестве аргументов (например, открытие баз данных, интернет соединений, механизм загрузки классов).

      Операция сцепления. Для строк доступна операция +, позволяющая соединить несколько строк в одну. Если один из операндов не строка, то он автоматически преобразуется в строку. Для объектов в этих целях используется метод toString.

      При каждой операции внутренне используется объект динамической строки StringBuilder или StringBuffer. Поэтому для собирания строки из нескольких все равно оптимальней использовать сразу один StringBuilder/StringBuffer.

      Выделение подстроки. Есть замечание относительно метода substring – возвращаемая строка использует тот же байтовый массив, что и исходная. Например, вы загрузили строку А из файла в 1мб. Что-то там нашли и выделили в отдельную строку Б длиной в 3 символа. Строка Б в реальности тоже занимает те же 1мб.

      String s ="very .... long string from file";

      String sub1 = s.substring(2,4); // совместно использует ту же память что и s

      String sub2 = new String(s.substring(2,4)); // этот объект использует отдельный массив на 4 символа

      Основные методы. Рассмотрим основные методы String:

      – equals(Object anObject) – проверяет, идентична ли строка указанному объекту;

      – compareTo(String anotherString) – лексиграфическое сравнение строк;

      – compareToIgnoreCase(String str) – лексиграфическое сравнение