Строки в Java описываются классом String и являютя статическими, т.е. в существующей строке нельзя изменить символы и их колличество.
Строки могут быть созданы напрямую из строковой литералы. При этом, в целях оптимизации, объекты созданные таким образом дополнительно сохраняются в отдельной области - строковый пул.
String s1 = "d"; // строка будет сохранена в пуле
Т.к. строки - это объекты класса String, то их можно создать и через конструктор класса
Класс объектКласса = new Класс(параметры);
Т.е. для объекта класса String конструктор будет таким:
String s1 = new String("d"); // строка не будет сохранена в пуле
// и будет уничтожена сборщиком мусора
Один из плюсов разделения строк на статические и динамические - повышение безопасности там, где строки используются в качестве аргументов (например, открытие баз данных, интернет соединений, механизм загрузки классов).
Операция конкатенации (сцепления) строк (операция +)
Для строк доступна операция +, позволяющая соединить несколько строк в одну. Если один из операндов не строка, то он автоматически преобразуется в строку. Для объектов в этих целях используется метод toString.
String s1 = "новая";
String s2 = "строка";
String s3 = s1 + " " + s2;
ОСНОВНЫЕ МЕТОДЫ
Определение длины строки (в символах)
String строка;
int длинаСтроки = строка.length();
Конкатенация строк
String строка1, строка2;
String длиннаяСтрока = строка1.concat(строка2);
то же самое, что
String длиннаяСтрока = строка1 + строка2;
Форматный вывод
%f - место подстановки значения из переменной типа float
%d - место подстановки значения из переменной типа int
%s - место подстановки строки из объекта класса String
float дробноеЧисло;
int целоеЧисло;
String строка;
System.out.printf("дробное = " +
"%f, целое = %d" +
" и строка: " +
"%s", дробноеЧисло, целоеЧисло, строка);
Форматирование строк
%f - место подстановки значения из переменной типа float
%d - место подстановки значения из переменной типа int
%s - место подстановки строки из объекта класса String
float дробноеЧисло;
int целоеЧисло;
String строка;
String фСтрока = String.format("дробное = " +
"%f, целое = %d" +
" и строка: " +
"%s", дробноеЧисло, целоеЧисло, строка);
Извлечение символа из строки в указанной позиции
Нумерация позиций в строках начинается с нуля
String строка;
int позиция;
char символ = строка.charAt(позиция);
Сравнение строки с другим объектом
String строка;
Object объект;
int результатСравнения = строка.compareTo(объект);
0: полное совпадение строки и объекта
меньше 0: строка лексикографически меньше объекта
больше 0: строка лексикографически больше объекта
Лексикографическое сравнение строки с другой строкой
String строка1, строка2;
int результатСравнения = строка1.compareTo(строка2);
0: полное совпадение строки1 и строки2
меньше 0: строка1 лексикографически меньше строки2
больше 0: строка1 лексикографически больше строки2
Лексикографическое сравнение строки с другой строкой без учёта регистров символов
String строка1, строка2;
int результатСравнения = строка1.compareToIgnoreCase(строка2);
0: полное совпадение строки1 и строки2
меньше 0: строка1 лексикографически меньше строки2
больше 0: строка1 лексикографически больше строки2
Сравнение содержимого
String строка;
StringBuffer цепочкаСимволов;
boolean результатСравнения = строка.contentEquals(цепочкаСимволов);
true: тогда и только тогда, когда в строке присутствует цепочкаСимволов
Преобразование массива символов в строку
char[] массивСимволов;
static String статическаяСтрока = copyValueOf(массивСимволов);
Преобразование части массива символов из указанного количества символов в строку, начиная с указанного элемента
char[] массивСимволов;
int начЭлемент;
int колЭлементов;
static String статическаяСтрока = copyValueOf(массивСимволов, начЭлемент, колЭлементов);
Проверка окончания строки1 на строку2
String строка1, строка2;
boolean результатПроверки = строка1.endsWith(строка2);
Проверка идентичности строки и объекта
String строка;
Object объект;
boolean результатПроверки = строка.equals(объект);
Проверка идентичности строки1 и строки2 без учёта регистра символов
String строка1, строка2;
boolean результатПроверки = строка1.equalsIgnoreCase(строка2);
Преобразование строки в массив байтов, согласно дефолтной кодовой таблице символов системы
String строка;
byte[] массивБайтов = строка.getBytes();
Преобразование строки в массив байтов, согласно указанной кодовой таблице символов
String строка;
String кодоваяТаблица; // = "UTF-8"; = "ISO-8859-1"; и т.д.
try {
byte[] массивБайтов = строка.getBytes(кодоваяТаблица);
} catch(UnsupportedEncodingException e) {
System.out.println("Неподдерживаемая таблица символов");
}
Извлечение массива символов из строки, начиная с начальной позиции и заканчивая конечной позицией и добавление его в существующий массив символов
String строка;
int начСимвол, конСимвол, позицияВставки, колЭлементовМассива;
char[] массивСимволов = new char[колЭлементовМассива];
try {
строка.getChars(начСимвол, конСимвол, массивСимволов, позицияВставки);
} catch(Exception ex) {
System.out.println("Ошибка копирования...");
}
Вычисление хеш-кода всей строки
Хеш-код строки s - это объект, вычисляемый по формуле
String строка;
int хешКод = строка.hashCode();
Поиск позиции первого вхождения символа в строку
String строка;
int кодСимвола;
int перваяПозиция = строка.indexOf(кодСимвола);
Поиск позиции первого вхождения символа в строку, начиная с указанной позиции
String строка;
int кодСимвола;
int начПозиция;
int перваяПозиция = строка.indexOf(кодСимвола, начПозиция);
Поиск позиции первого вхождения строки2 в строку1
String строка1, строка2;
int перваяПозиция = строка1.indexOf(строка2);
Поиск позиции первого вхождения строки2 в строку1, начиная с указанной позиции
String строка1, строка2;
int начПозиция;
int перваяПозиция = строка1.indexOf(строка2, начПозиция);
Поиск позиции последнего вхождения символа в строку
String строка;
int кодСимвола;
int последняяПозиция = строка.lastIndexOf(кодСимвола);
Поиск позиции последнего вхождения символа в строку, начиная с указанной позиции
String строка;
int кодСимвола;
int начПозиция;
int последняяПозиция = строка.lastIndexOf(кодСимвола, начПозиция);
Поиск позиции последнего вхождения строки2 в строку1
String строка1, строка2;
int последняяПозиция = строка1.lastIndexOf(строка2);
Поиск позиции последнего вхождения строки2 в строку1, начиная с указанной позиции
String строка1, строка2;
int начПозиция;
int последняяПозиция = строка1.lastIndexOf(строка2, начПозиция);
Подсчёт длины строки в символах
String строка;
int длинаСтроки = строка.length();
Проверка на идентичность части строки1 с указанной позиции и части строки2 с указанной позиции, длинной в указанное количество символов с возможностью игнорирования регистра символов
String строка1, строка2;
boolean игнорРег;
int начПозСтр1, начПозСтр2, колСимв;
boolean резПров = строка1.regionMatches(игнорРег, начПозСтр1, строка2, начПозСтр2, колСимв);
Проверка на идентичность части строки1 с указанной позиции и части строки2 с указанной позиции, длинной в указанное количество символов
String строка1, строка2;
int начПозСтр1, начПозСтр2, колСимволов;
boolean резПров = строка1.regionMatches(начПозСтр1, строка2, начПозСтр2, колСимв);
Замена во всей строке указанного символа на другой указанный
String строка;
char старыйСимвол, новыйСимвол;
String новаяСтрока = replace(старыйСимвол, новыйСимвол);
Проверка начала строки1 на строку2
String строка1, строка2;
boolean результатПроверки = строка1.startsWith(строка2);
Проверка наличия в строке1 строки2 в указанной позиции
String строка1, строка2;
int начПоз;
boolean результатПроверки = строка1.startsWith(строка2, начПоз);
Выделение цепочки символов из строки, начиная и заканчивая указанными позициями
String строка;
int начПоз, конПоз;
CharSequence цепочкаСимв = строка.subSequence(начПоз, конПоз);
Выделение подстроки, начиная с указанной позиции
String строка;
int начПоз;
String подстрока = строка.substring(начПоз);
Выделение подстроки, начиная и заканчивая указанными позициями
String строка;
int начПоз, конПоз;
String подстрока = строка.substring(начПоз, конПоз);
Конвертация строки в массив символов
String строка;
char[] массивСимволов = строка.toCharArray();
Перевод символов в нижний регистр
String строка;
String новаяСтрока = строка.toLowerCase();
Перевод символов в нижний регистр, применяя правила локализации
String строка;
Locale локаль; // = new Locale("ru");
String новаяСтрока = строка.toLowerCase(локаль);
Приведение к строке
int целоеЧисло;
double дробноеЧисло;
String строка1 = целоеЧисло.toString();
String строка2 = дробноеЧисло.toString();
Перевод символов в верхний регистр
String строка;
String новаяСтрока = строка.toUpperCase();
Перевод символов в верхний регистр, применяя правила локализации
String строка;
Locale локаль; // = new Locale("ru");
String новаяСтрока = строка.toUpperCase(локаль);
Отсекание всех начальных и конечных пробелов
String строка;
String новаяСтрока = строка.trim();
Преобразование в строку
double дробноеЧисло;
boolean флагДаНет;
long длинноеЦелоеЧисло;
char[] массивСимволов;
String строка1 = String.valueOf(дробноеЧисло);
String строка2 = String.valueOf(флагДаНет);
String строка3 = String.valueOf(длинноеЦелоеЧисло);
String строка4 = String.valueOf(массивСимволов);
До встречи в следующем уроке.
|