String: mutable, immutable, StringBuilder, StringBuffer, StringTokinizer

Содержание

Слайд 2

1. Что такое mutable/imutable объекты и зачем они Объекты, которые после

1. Что такое mutable/imutable объекты и зачем они

Объекты, которые после создания

можно изменить, называются изменяемыми или mutable. Если объекты после создания изменить нельзя, называются неизменяемыми или immutable.
Два свойства, которые характерны практически для всех immutable объектов:
1) Неизменяемые объекты можно реализовать значительно проще, чем изменяемые.
2) Неизменяемые объекты можно свободно использовать одновременно из разных нитей.
Слайд 3

- А если мне нужно что-то поменять в таком объекте? Что

- А если мне нужно что-то поменять в таком объекте? Что

вообще можно сделать с неизменяемым объектом?
- Обычно immutable классы содержат различные методы, которые «как-бы» меняют объект, но вместо изменения самого объекта эти методы просто создают новый объект и возвращают его.
String s = "moscow"; String s2 = s.toUpperCase();
Класс String – это immutable класс . s содержит строку «moscow», а s2 –«MOSCOW» т.е содержит новую строку, которая идентична первой
Слайд 4

2. Все классы, связанные со строками, что они делают и все

2. Все классы, связанные со строками, что они делают и все

их методы

String отвечает за неизменяемую строку(immutable)
StringBuilder – за изменяемую(mutable)
StringBuffer – это копия StringBilder, но все методы которого объявлены synchronized
Разве тут строка не изменяется?

Слайд 5


Слайд 6

Слайд 7

Слайд 8

3. Внутреннее устройство String, метод substring Метод substring возвращает часть строки

3. Внутреннее устройство String, метод substring

Метод substring возвращает часть строки
Первый вариант

возвращает подстроку, заданную начальным и конечным номерами символов. Последний символ при этом не входит!
Второй вариант – от переданного номера и до конца строки.
Слайд 9

Слайд 10

4. Поиск, получение, удаление подстроки в String

4. Поиск, получение, удаление подстроки в String

Слайд 11

Слайд 12

Слайд 13

5. Что можно делать с помощью класса StringBuilder, StringBuffer 1) У

5. Что можно делать с помощью класса StringBuilder, StringBuffer

1) У меня

есть обычная строка, я хочу сделать ее изменяемой.
String s = "Bender"; StringBuilder s2 = new StringBuilder(s);
2) Я хочу добавить символ к текущей «изменяемой строке»?
 String s = "Bender"; StringBuilder s2 = new StringBuilder(s); s2.append("!");
3) А как преобразовать StringBuilder обратно в строку?
String s = "Bender"; StringBuilder s2 = new StringBuilder(s); s2.append("!"); s = s2.toString();
Слайд 14

4) А если мне нужно удалить символ? String s = "Bender";

4) А если мне нужно удалить символ?
String s = "Bender"; StringBuilder s2

= new StringBuilder(s); s2.deleteCharAt(2); //останется "Beder"
5) Я хочу заменить часть строки на другую?
String s = "Bender"; StringBuilder s2 = new StringBuilder(s); s2.replace (3, 5, "_DE_"); //будет "Ben_DE_r"
6) Мне нужно развернуть строку задом наперед?
String s = "Bender"; StringBuilder s2 = new StringBuilder(s); s2.reverse(); //будет "redneB";
Слайд 15

6. Регулярные выражения

6. Регулярные выражения

Слайд 16

Слайд 17

Слайд 18

Регулярные выражения, примеры «^» - означает, что подстрока обязана включать начало

Регулярные выражения, примеры

«^» - означает, что подстрока обязана включать начало строки.
«$»

- означает, что подстрока обязана включать конец строки.
В регулярных выражениях символы «[ ] \ / ^ $ . | ? * + ( ) { }» имеют специальное значение. Их еще называют «управляющие символы». Поэтому просто так их использовать в строке нельзя.
Их необходимо экранировать. Для этого, используется символ «\».
Слайд 19

Слайд 20

7. String.replace, String.split

7. String.replace, String.split

Слайд 21

Слайд 22

7.StringTokinizer(еще один способ разбиения строки на части ) Этот класс не

7.StringTokinizer(еще один способ разбиения строки на части )


Этот класс не

использует регулярные выражения, вместо этого в него просто передается строка, состоящая из символов-разделителей. Преимущества этого подхода в том, что он не разбивает сразу всю строку на кусочки, а идет от начала к концу.
Класс состоит из конструктора и двух методов. В конструктор нужно передать строку, которую мы разбиваем на части, и строку – набор символов, используемых для разделения.
Метод nextToken возвращает очередной токен – подстроку.
Метод hasMoreTokens() возвращает true, если еще остались не отданные подстроки.
Слайд 23

Слайд 24

Задача 1 (com.simbirsoft.lesson00.task00) Найти подстроку Метод getPartOfString() должен возвращать подстроку начиная

Задача 1 (com.simbirsoft.lesson00.task00)

Найти подстроку Метод getPartOfString() должен возвращать подстроку начиная с символа

после 1-го пробела и до конца слова, которое следует после 4-го пробела. Пример: "Курсы Simbirsoft - лучший способ прокачать уровень знаний Java." Результат: "Simbirsoft - лучший способ " На некорректные данные бросить исключение TooShortStringException (сделать исключением).
Слайд 25

Задача 2 Между табуляциями Метод getPartOfString() должен возвращать подстроку между первой

Задача 2

Между табуляциями Метод getPartOfString() должен возвращать подстроку между первой и второй

табуляцией. На некорректные данные бросить исключение TooShortStringException.
Слайд 26

Задача 3 StringTokenizer Используя StringTokenizer разделить query на части по разделителю

Задача 3

StringTokenizer Используя StringTokenizer разделить query на части по разделителю delimiter. Пример: getTokens("level22.lesson13.task01",

".") == {"level22", "lesson13", "task01"}
Слайд 27

Слайд 28

Шифровка Задача: Придумать механизм шифровки/дешифровки Программа запускается с одним из следующих

 

Шифровка Задача: Придумать механизм шифровки/дешифровки Программа запускается с одним из следующих наборов

параметров: -e fileName fileOutputName -d fileName fileOutputName где fileName - имя файла, который необходимо зашифровать/расшифровать fileOutputName - имя файла, куда необходимо записать результат шифрования/дешифрования -e - ключ указывает, что необходимо зашифровать данные -d - ключ указывает, что необходимо расшифровать данные

package com.javarush.test.level18.lesson10.bonus01;