Вводный курс. Язык программирования Java
- Вводный курс. Язык программирования Java
- Просмотров: 11278
12. Строки в Java. Класс String
Текстовые строки в Java приставлены тремя классами:
- String
- StringBuilder
- StringBuffer
- Любая строка является объектом класса String.
- В классе String содержаться строки неизменной длины, что позволяет ускорить обработку строк.
- При каждом изменении строки создается новый объект, а прежний превращается в мусор.
- Длину строки и содержание можно изменить в объектах класса StringBuilder и StringBuffer, которые обеспечивают обработку строк в однопоточной и многопоточной среде.
При формировании строки как объекта класса String вызывается конструктор и методы класса StringBuffer. Например, строка «Java. Изучаем строки.» создается так:
String s = new StringBuffer().append("Java.").append(" Изучаем. ").append(" строки.").toString();
Все классы имеют общие методы:
- length() – возвращает количество символов в строке
- charAt(int pos) – возвращает символ, находящийся в позиции pos
Класс String
- Любая строка (набор символов) является объектом – экземпляром класса String.
- Переменные типа String являются ссылками на объекты.
- Объект типа String – строка, состоящая из произвольного числа символов, от 0 до 2*109.
Работа со строками
-
Операция сцепления: «+»
Пример.
String s = "Это строка.";
String s1 = " символов ее длина.";
//выполним сцепление строк
String s2 = s+ " " +s.length()+s1;
System.out.println(s2);
Будет выведено
Это строка. 11 символов ее длина.
-
Сравнение строк: equals
Операция сравнения == сопоставляет только ссылки на строки
Сравнение содержимого строк выполняет логический метод equals класса String
Boolean f = s.equals(String str));
где s- строка сравнивается со строкой str;
если метод возвращает true – строки равны;
Пример.
Запишем две строки, и во второй строке сделаем на один пробел между словами больше чем в первой. Должны получить неравенство строк.
String s3 ="Центр «Турбо»";
String s4 ="Центр «Турбо»";
boolean f =s3.equals(s4);
if(f) System.out.println("Строки равны"); else
System.out.println("Строки не равны");
Будет выведено
Строки не равны.
-
Получить символ, имеющий индекс n, из строки s
char ch =s.charAt(n);
где: ch - символ
s- строка
n- позиция символа в строке
Пример.
String s3 ="Центр «Турбо»";
char ch= s3.charAt(0);
System.out.println(ch); //символ Ц
ch= s3.charAt(s3.lenght-1);
System.out.println(ch); //символ »
Будет выведено
Ц
»
-
Выбор подстроки
1 метод
String sub= s.substring(start);
Подстрока начинается с позиции start
2 метод
String sub= s.substring(start,end);
Подстрока начинается с позиции start, заканчивается в позиции в end-1
Пример
//0 1 2 3 4 5 6 7 8 9 0 1 2
//Ц е н т р «Т у р б о»
String s3 ="Центр «Турбо»";
String sub= s3.substring(6);
System.out.println(sub); // «Турбо»
sub= s3.substring(0,5);
System.out.println(sub);// Центр
Будет выведено
«Турбо»
Центр
-
Разбиение строки на подстроки
String sub[] = s.split(String разделитель);
Результат разбиения массив записывается в массив sub[]
Пример:
Пример. Дана стрка:
String str = "В ногах нет правды. На вкус и цвет товарища нет. На нет и суда нет. Нет дыму без огня. Нет худа без добра. Там хорошо, где нас нет.";
Определим:
- Общее кол-во символов
Общее количество символов - это есть длина строки: str.length(). - Количество предложений
Для определения количества предложений используем разбиение строки на подстроки, в качестве разделителя используем точку.
String [] sentence = str.split("\\.");
- Количество слов
Для определения количества слов используем разбиение строки на подстроки, в качестве разделителя используем пробел.
String [] words = str.split(" ");
System.out.println("Кол-во символов: " + str.length());
String [] sentence = str.split("\\.");
System.out.println("Кол-во предложений: " + sentence.length);
//разделение на слова
String [] words = str.split(" ");
System.out.println("Кол-во слов: " + words.length);
for(int i=0; i< words.length; i++)
System.out.print(words[i] + “ “ );
Будет выведено:
Кол-во символов: 131
Кол-во предложений: 6
Кол-во слов: 28
В ногах нет правды. На вкус и цвет товарища нет. На нет и суда нет. Нет дыму без огня. Нет худа без добра. Там хорошо, где нас нет.
6. Найти подстроку
- Первое вхождение подстроки в строку отыскивает метод
int n= s.indexOf(String sub),
n –индекс первого символа первого вхождения подстроки.
- Вхождение подстроки в строку с позиции start отыскивает метод
int n = s.indexOf (String sub, int start),
поиск выполняется не с начала строки, а с индекса start.
Пример.
int n = s3.indexOf("Турбо");
System.out.println("n = "+ n); //n= 7
-
Удалить пробелы в начале и конце строки
String Snew =S.trim();
Метод trim() возвращает новую строку, в которой удалены начальные и конечные пробелы
Пример.
String s5 =" Java ";
int len= s5.length();
System.out.println("len = "+ len);// len=8
String s6= s5.trim(); //удаляем пробелы
len= s6.length();
System.out.println("len new = "+ len); // len=4
-
Заменить отдельный символ
String Snew = S.replace (int old, int new)
Метод возвращает новую строку, в которой все вхождения символа old заменены символом new . Если символа old в строке нет, то возвращается ссылка на исходную строку. Регистр букв при замене учитывается.
-
Преобразовать данные другого типа в строку
В языке Java принято соглашение — каждый класс отвечает за преобразование других типов в тип своего класса и должен содержать нужные для этого методы. Класс String содержит восемь статических методов преобразования (типы: boolean, char, int, long, float, double):
String S_new = String.valueof (type_elem)
String value="";
value = String.valueOf(25); //преобразуем число 25 в строку
System.out.println("value = "+ value);
Еще один простой способ преобразованмя — сцепить значение value какого-либо типа с пустой строкой: "" + value. При этом неявно вызывается метод value.toString().
double dvalue=45.0;
System.out.println("value = "+ dvalue);
-
Перевод строки в число
String st="12";
byte b = Byte.parseByte(st); //12
short sh = Short.parseShort(st); //12
int i = Integer.parseInt(st); //12
long l = Long.parseLong(st); //12
float fl = Float.parseFloat(st); //12.0
double d = Double.parseDouble(st); //12.0
-
Перевод числа в строку
String st="";
st=Float.toString(12.2); //"12.2"
st=Integer.toString(10); //"10"
st=Integer.toString((int) 10.2); //"10.2"
st=Double.toString(10); //"10.2"