Слайд 2
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. Все классы, связанные со строками, что они
делают и все их методы
String отвечает за неизменяемую строку(immutable)
StringBuilder
– за изменяемую(mutable)
StringBuffer – это копия StringBilder, но все методы которого объявлены synchronized
Разве тут строка не изменяется?
Слайд 8
3. Внутреннее устройство String, метод substring
Метод substring возвращает
часть строки
Первый вариант возвращает подстроку, заданную начальным и конечным
номерами символов. Последний символ при этом не входит!
Второй вариант – от переданного номера и до конца строки.
Слайд 10
4. Поиск, получение, удаление подстроки в String
Слайд 13
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";
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";
Слайд 18
Регулярные выражения, примеры
«^» - означает, что подстрока обязана
включать начало строки.
«$» - означает, что подстрока обязана включать
конец строки.
В регулярных выражениях символы «[ ] \ / ^ $ . | ? * + ( ) { }» имеют специальное значение. Их еще называют «управляющие символы». Поэтому просто так их использовать в строке нельзя.
Их необходимо экранировать. Для этого, используется символ «\».
Слайд 20
7. String.replace, String.split
Слайд 22
7.StringTokinizer(еще один способ разбиения строки на части )
Этот класс не использует регулярные выражения, вместо этого
в него просто передается строка, состоящая из символов-разделителей. Преимущества этого подхода в том, что он не разбивает сразу всю строку на кусочки, а идет от начала к концу.
Класс состоит из конструктора и двух методов. В конструктор нужно передать строку, которую мы разбиваем на части, и строку – набор символов, используемых для разделения.
Метод nextToken возвращает очередной токен – подстроку.
Метод hasMoreTokens() возвращает true, если еще остались не отданные подстроки.
Слайд 24
Задача 1 (com.simbirsoft.lesson00.task00)
Найти подстроку
Метод getPartOfString() должен возвращать подстроку
начиная с символа после 1-го пробела и до конца
слова, которое следует после 4-го пробела.
Пример: "Курсы Simbirsoft - лучший способ прокачать уровень знаний Java."
Результат: "Simbirsoft - лучший способ "
На некорректные данные бросить исключение TooShortStringException (сделать исключением).
Слайд 25
Задача 2
Между табуляциями
Метод getPartOfString() должен возвращать подстроку между
первой и второй табуляцией.
На некорректные данные бросить исключение TooShortStringException.
Слайд 26
Задача 3
StringTokenizer
Используя StringTokenizer разделить query на части
по разделителю delimiter.
Пример:
getTokens("level22.lesson13.task01", ".") == {"level22", "lesson13", "task01"}
Слайд 28
Шифровка
Задача: Придумать механизм шифровки/дешифровки
Программа запускается с одним
из следующих наборов параметров:
-e fileName fileOutputName
-d fileName fileOutputName
где
fileName -
имя файла, который необходимо зашифровать/расшифровать
fileOutputName - имя файла, куда необходимо записать результат шифрования/дешифрования
-e - ключ указывает, что необходимо зашифровать данные
-d - ключ указывает, что необходимо расшифровать данные
package com.javarush.test.level18.lesson10.bonus01;