Вход/Регистрация
Визуальное программирование на Java Swing в NetBeans
вернуться

Талипов Сергей

Шрифт:

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) – лексиграфическое сравнение строк без учета регистра символов;

– concat(String str) – возвращает соединение двух строк;

– contains(CharSequence s) – проверяет, входит ли указанная последовательность символов в строку;

– isEmpty – возвращает true, если длина строки равна 0;

– indexOf(String str) – поиск первого вхождения указанной подстроки;

– replace(CharSequence target, CharSequence replacement) – замена одной подстроки другой;

– substring(int beginIndex, int endIndex) – возвратить подстроку как строку;

– toLowerCase – преобразовать строку в нижний регистр;

– toUpperCase – преобразовать строку в верхний регистр;

– trim – отсечь на концах строки пустые символы;

– length – определение длины строки;

– valueOf(a) – статические методы преобразования различных типов в строку;

– charAt(int index) – возвращает символ по указанному индексу;

– regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) – тест на идентичность участков строк, можно указать учет регистра символов;

– regionMatches(int toffset, String other, int ooffset, int len) – тест на идентичность участков строк;

– endsWith(String suffix) – проверяет, завершается ли строка указанным суффиксом;

– startsWith(String prefix) – проверяет, начинается ли строка с указанного префикса;

– startsWith(String prefix, int toffset) – проверяет, начинается ли строка в указанной позиции с указанного префикса;

– getBytes – возвращает байтовое представление строки;

– getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) – возвращает символьное представление участка строки;

  • Читать дальше
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: