русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

StringBuffer,


Дата добавления: 2013-12-23; просмотров: 1524; Нарушение авторских прав


Методы для работы со строками класса StringBuffer

Класс StringBuffer

Методы для работы со строками класса String

Класс String

Строки

0 1 2 3 4 5 6 7 8 9

9 8 7 6 5 4 3 2 1 0

5 5 5 5 5 5 5 5 5 5

2. сортировка всего массива или его части по возрастанию:

static void sort(type nameMassiv[]);

static void sort(type nameMassiv[], int from, int to);

Пример:

int myVector[]=new int[10]{9,8,7,6,5,4,3,2,1,0};

System.out.println(“Исходный вектор:”);

for (int value: myVector)

System.out.printf(“%5d”, value);

Arrays.sort(myVector); // вызов метода сортировки

System.out.println(“Отсортированный вектор:”);

for (int value: myVector)

System.out.printf(“%5d”, value);

 

В окне вывода появится:

 

Исходный вектор:

Отсортированный вектор:

 

3. бинарный поиск заданного элемента element в предварительно отсортированном массиве или его части:

static int binarySearch(type nameMassiv[], type element);

static int binarySearch(type nameMassiv[], int from, int to, type element);

Метод возвращает индекс найденного элемента массива (индексация элементов начинается с нуля). Если элемент не найден, то возвращается отрицательное число, абсолютная величина которого означает индекс, с которым элемент был бы вставлен в массив в заданном порядке;

4. сравнение массивов:

static boolean equals(type nameMassiv_1[],type nameMassiv_2[]);

Массивы считаются равными и метод возвращает true, если они имеют одинаковую длину и равны все элементы массивов с одинаковыми индексами. Для сравнения многомерных массивов используется метод:

static boolean deepEquals(Object nameMassiv_1[],Object nameMassiv_2[]);



5. представление массива строкой:

static String toString(type nameMassiv[]);

В формируемой строке массив записывается в квадратных скобках, его элементы перечисляются через запятую и пробел.

Для преобразования многомерных массивов в строку используется метод:

static String deepToString(Object nameMassiv[]);

Строки в Java – это экземпляры классов, объекты. Для работы с ними используются два класса: String и StringBuffer. Поэтому с формальной точки зрения создание текста (строк) сводится к созданию объекта одного из этих классов. Основное различие между этими классами состоит в том, что объекты класса String изменять нельзя, а объекты класса StringBuffer – можно.

Оба этих класса определены в базовом пакете java.lang , который доступен по умолчанию, поэтому импорт пакета выполнять не нужно.

 

Создать строку текста класса String можно оператором присваивания:

String text=”Это текстовая строка”;

При этом создается объектная переменная (ссылка) text на объект с текстом. Если изменить этот текст:

String text=”Это новая текстовая строка”;

То создается новый объект с новым текстом, на который сейчас будет указывать ссылка text. Старый объект со старым текстом остается в памяти компьютера до “уборки мусора”. При этом создается полная иллюзия того, что мы работаем с одной и той же строкой.

Создать строку текста можно также с помощью многочисленных конструкторов класса String:

1. создание пустой строки:

String text=new String();

создана пустая строка text;

2. создание копии объекта-строки:

String text=”Это текстовая строка”;

String newText=new String(text);

создан новый объект-строка newText с таким же содержанием, как и объект text;

3. создание новой строки на основе символьного массива:

char symbols[]={‘J’, ‘a’, ‘v’, ‘a’};

String text=new String(symbols);

создан новый объект-строка text с содержанием “Java”,

4. создание новой строки на основе массива байтов:

byte nums[]={65, 66, 67, 68};

String text=new String(nums);

создан новый объект-строка text с содержанием “ABCD” (используются ASCII -коды символов). Такая ситуация возникает при чтении ASCII-файлов, извлечении информации из базы данных или при передаче информации по сети. Если исходный кириллический ASCII-файл (ASCII-текст) был в кодировке CP-1251 (windows 1251), то JAVA-строка будет создана правильно.

В классе String собрано много методов для работы со строками. Вот некоторые из них:

1. определение длины строки:

String str=”Это текстовая строка”;

int n=str.length(); // n=20

2. определение пустой строки:

String str=””;

boolean value=str.isEmpty(); // value=true – строка пустая

3. определение символа в строке по его индексу:

String str=”Это текстовая строка”;

char ch=str.charAt(5); // ch=’е’ – нумерация начинается с нуля!

4. преобразование строки в массив символов (ASCII-кодировка):

String str=”Это строка”;

char chArray[]=str.toCharArray();

создан массив символов chArray[] с содержанием {‘Э’,‘т’,‘о’,‘ ’,‘с’,‘т’, ‘р’,‘о’,‘к’,‘а’};

5. преобразование строки в массив байтов по ASCII-кодировке:

String str=”ABCDE”;

byte byteArray[]=str.getBytes();

создан массив байтов byteArray[] с содержанием {65, 66, 67, 68, 69};

6. сравнение двух строк с учетом регистра:

String str_1=”Даша”;

String str_2=”даша”;

boolean result=str_1.equals(str_2); // result=true, т.к. Даша>даша

строки сравниваются посимвольно (по ASCII-кодам) слева направо до первого несовпадения,

7. сравнение двух строк без учета регистра:

String str_1=”Вася Пупкин”;

String str_2=”ВАСЯ ПУПКИН”;

boolean result=str_1.equalsIgnoreCase(str_2); // result=true

Внимание! Для сравнения строк нельзя использовать операции == и != .

8. поиск символов и подстрок в строке с начала строки:

String str=”Наша Маша шагает в шапке”;

char chr=’а’;

int result=str.indexOf(chr); // result=1 (нумерация символов
// начинается снуля)

String str_1=”ша”;

result=str.indexOf(str_1); // result=2 – первое “ша”

// начинается со второго символа

если подстрока не найдена, то результат поиска равен -1,

9. поиск символов и подстрок в строке с конца строки:

String str=”Наша Маша шагает в шапке”;

char chr=’а’;

int result=str.lastIndexOf(chr); // result=20 (нумерация символов
// начинается снуля)

String str_1=”ша”;

result=str.lastIndexOf(str_1); // result=19

если в исходной строке имеются ESC-последовательности (\n) , то каждая из них считается одним символом;

10. выделение подстроки из исходной строки:

String str=”Мы программируем на Java”;

String s=str.subString(3, 16); // s=программируем

задается индекс начального символа (3) и индекс символа, который уже не будет входить в подстроку (16),

11. замена одного символа в строке другим:

String str=”Мы программируем на Java”;

String s=str.replace(‘ ‘, ‘_’); // заменяем все пробелы
//
на символыподчеркивания

12. замена одной подстроки на другую:

String str=”Наша Маша шагает в шапке”;

String s=str.replaceAll(“ша”, “ся”); // заменяем все вхождения
//
“ша” на “ся”

если заменяемая подстрока не найдена, то возвращается ссылка на исходную строку; регистр букв при замене учитывается,

String str=”Наша Маша шагает в шапке”;

String s=str.replaceFirst(“ша”, “ся”); // заменяем первое вхождение
//
“ша” на “ся”

13. удаление начальных и конечных пробелов в строке:

String str=” Мы программируем на Java ”;

String s=str.trim(); // строка s без начальных
//
и конечных пробелов

14. перевод всех букв в строке в нижний регистр (строчные буквы):

String str=”Маша и Даша”;

String s=str.toLowerCase(); // s=”маша и даша”

15. перевод всех букв в строке в верхний регистр (прописные буквы):

String str=”Маша и Даша”;

String s=str.toUpperCase(); // s=”МАША И ДАША”

16. разбиение строки на подстроки (создание массива подстрок):

String str=”Маша и Даша”;

String massiv[]s=str.split(“ “);

создается массив строк, элементы которого – это подстроки (слова), разделенные символами, указанными в качестве аргумента метода (в данном случае – пробелом):

massiv[0]=”Маша”;

massiv[1]=”и”;

massiv[2]=”Даша”;

при этом сами разделители в подстроки не входят,

17. поиск совпадения начала двух строк:

String str=”Берегите природу – мать вашу”;

String val=”Берег”;

boolean result=str.startsWith(val); // result=true

в этом случае строка str начинается с символов строки val,

18. поиск совпадения окончаний двух строк:

String str=”Берегите природу – мать вашу”;

String val=”шу”;

boolean result=str.endsWith(val); // result=true

в этом случае строка str заканчивается символами строки val.

Допускается сложение строк с числовыми величинами:

String str = 1 + 2 + 3; // str=”6”

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

При программировании этой операции нужно быть очень внимательным:

String str=”Сумма=” + 1 + 2 + 3; // str= “сумма=123”

В этом случае сначала производится сложение двух строк “Сумма=” +1 , причем второй операнд автоматически преобразуется в строку. Таким же образом в строку добавляются третий и четвертый операнды.

String str=1 + 2 + “ не равно ” 1 + 2; // str=”3 не равно 12”

 

Строки класса StringBuffer удобны в тех случаях, когда требуется производить изменения в одной и той же строке – убирать или вставлять символы, менять их местами, заменять одни на другие. Изменения значений переменных этого класса не приводит к созданию мусора, и обычно происходит значительно быстрее, чем при работе с переменными типа String: быстродействие приложения повышается в десятки раз, потребление памяти уменьшается в сотни и тысячи раз.

Помимо поля длины строки, у строк этого класса имеется еще поле capacity (емкость) – размер буфера под символы строки. Только что созданная строка имеет буфер, достаточный для хранения 16 символов. Как только буфер начинает переполняться, его емкость автоматически увеличивается, чтобы вместить новые символы.

Создать строку текста класса StringBuffer можно с помощью следующих конструкторов:

1. создание пустой строки:

StringBuffer text=new StringBuffer();

создана пустая строка text и автоматически зарезервирована память еще на 16 символов;

2. создание пустой строкис заданным размером буфера:

StringBuffer text=new StringBuffer(60);

создана пустая строка text и для нее зарезервирована память на 60+16 символов;

3. создание копии строки на основе существующей строки этого же класса:

StringBuffer text=new StringBuffer(StringBuffer str);

создан новый объект-строка text - копия строки str.

 

В классе StringBuffer собрано много методов для работы со строками:

1. определение текущейдлины строки:

StringBuffer str = new StringBuffer(”Это текстовая строка”);

int n=str.length(); // n=20 – текущая длина строки в символах

2. определение выделенного для строки объема памяти:

StringBuffer str = new StringBuffer(”Это текстовая строка”);

int n=str.capacity(); // n=36 – текущая длина строки

// плюс 16 байтов

3. вставка подстроки в исходную строку:

StringBuffer str = new StringBuffer(”Это текстовая строка”);

str.insert(4,”новая ”); // str=”Это новая текстовая строка”

первый аргумент метода – индекс начала вставки подстроки,

4. удаление подстроки из исходной строки:

StringBuffer str = new StringBuffer(”Это текстовая строка”);

str.delete(4, 14); // str=”Это строка”

первый аргумент метода – индекс начала удаляемой подстроки, второй – индекс первого после удаляемой подстроки символа,

5. добавление текста в конец строки:

StringBuffer str = new StringBuffer(”Мы изучаем Java”);

str.append(“ и Си”); // str=”Мы изучаем Java и Си”

6. замена подстроки в строке:

StringBuffer str = new StringBuffer(”Мы изучаем Java”);

str.replace(3, 10, “программируем на”); // str=”Мы программируем на

// Java”

первый аргумент метода – индекс начала заменяемой подстроки, второй – индекс первого после заменяемой подстроки символа, третий – заменяющая подстрока,

7. переворот строки:

StringBuffer str = new StringBuffer(”Мы изучаем Java”);

str.reverse(); // str=”avaJ меачузи ыМ”

аргументов у этого метода нет,

8. копирование строки класса StringBuffer в строку класса String:

StringBuffer str = new StringBuffer(”Мы изучаем Java”);

String text = str.toString(); // text=”Мы изучаем Java”

9. копирование части строки класса StringBuffer в строку класса String (StringBuffer):

StringBuffer str = new StringBuffer(”Мы изучаем Java”);

CharSequence text = str.subSequence(3, 10); // text=”изучаем”

Возвращаемое значение имеет тип CharSequence, прародительский для классов String и

10. копирование части строки класса StringBuffer в строку класса String:

StringBuffer str = new StringBuffer(”Мы изучаем Java”);

String text= str.substring(3, 10); // text=”изучаем”

11. поиск подстроки в строке слева направо:

StringBuffer str = new StringBuffer(”Мы изучаем Java”);

String text = ”изучаем”;

int n = str.indexOf(text); // n=3

Внимание! Искомая подстрока должна быть класса String!

Если подстрока не найдена, то возвращается значение -1,

12. поиск подстроки в строке справа налево:

StringBuffer str = new StringBuffer(”Мы изучаем языки Си и Си#”);

String text = ”Си”;

int n = str.lastIndexOf(text); // n=22

Внимание! Искомая подстрока должна быть класса String!

Если подстрока не найдена, то возвращается значение -1,

13. замена подстроки в строке:

StringBuffer str = new StringBuffer(”Мы изучаем Java”);

String text = ”Си”;

str.replace(11, 15, text); // str=”Мы изучаем Си”

Внимание! Заменяемая подстрока должна быть класса String!

В исходной строке были заменены все символы указанного диапазона (подстрока “Java”) на новую строку text. Правая граница заменяемого диапазона должна быть на единицу больше необходимой.

 

 



<== предыдущая лекция | следующая лекция ==>
Методы для работы с массивами | Среди миров, в мерцании светил,


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.011 сек.