Top.Mail.Ru

Перечень уроков по Java

12. Строки в Java. Класс String

Текстовые строки в Java приставлены тремя классами:

  • String
  • StringBuilder
  • StringBuffer
  1. Любая строка является объектом класса String.
  2. В классе String содержаться строки неизменной длины, что позволяет ускорить обработку строк.
  3. При каждом изменении строки создается новый объект, а прежний превращается в мусор.
  4. Длину строки и содержание можно изменить в объектах класса StringBuilder и StringBuffer, которые обеспечивают обработку строк в однопоточной и многопоточной среде.

При формировании строки как объекта класса String вызывается конструктор и методы класса StringBuffer. Например, строка «Java. Изучаем строки.» создается так:

String s = new  StringBuffer().append("Java.").append(" Изучаем. ").append(" строки.").toString();

Все классы имеют общие методы:

  •  length() – возвращает количество символов в строке
  •  charAt(int pos) – возвращает символ, находящийся в позиции pos

 

Класс String

  1. Любая строка (набор символов) является объектом – экземпляром класса String.
  2. Переменные типа String являются ссылками на объекты.
  3. Объект типа String – строка, состоящая из произвольного числа символов, от 0 до 2*109.

 

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

 

  1. Операция сцепления:   «+»

Пример.

String s  = "Это строка.";

String s1 = " символов ее длина.";

//выполним сцепление строк

String s2 = s+ " " +s.length()+s1;

System.out.println(s2);  

 

 Будет выведено

Это строка. 11 символов ее длина.

  

  1. Сравнение строк:  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("Строки не равны");

 

 Будет выведено

 Строки не равны.

  

  1. Получить символ, имеющий индекс 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. Выбор подстроки

 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);// Центр

 

Будет выведено

«Турбо»
Центр

  

  1. Разбиение строки на подстроки

 String sub[] = s.split(String  разделитель);

 Результат разбиения массив записывается в массив sub[]

 

Пример:

 Пример. Дана стрка:

 String str = "В ногах нет правды. На вкус и цвет товарища нет. На нет и суда нет. Нет дыму без огня. Нет худа без добра. Там хорошо, где нас нет.";

 Определим:

  1. Общее кол-во символов
    Общее количество символов - это есть длина строки: str.length(). 
  2. Количество предложений

    Для определения количества предложений используем разбиение строки на подстроки, в качестве разделителя используем точку.

    String [] sentence  = str.split("\\.");

  3.  Количество слов

    Для определения количества слов используем разбиение строки на подстроки, в качестве разделителя используем пробел.
    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

 

 

  1. Удалить пробелы в начале и конце строки

 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

 

  

  1.  Заменить отдельный символ

 String Snew = S.replace (int old, int new)

 

Метод возвращает новую строку, в которой все вхождения символа old заменены символом new . Если символа old в строке нет, то возвращается ссылка на исходную строку.  Регистр букв при замене учитывается.

  

  1. Преобразовать данные другого типа в строку

 В языке 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);

 

  1. Перевод строки в число

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

 

 

  1. Перевод числа в строку

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"