— Привет, Амиго!
— Так ведь уже здоровались, Билаабо.
— Да? Но мне все равно приятно начинать каждый урок с этой фразы.
Сегодня мы плотно займемся классом String.
— Так я там уже все знаю. Даже то, что String – immutable.
— У класса String 46 методов, сколько из них знаешь ты?
— Не больше десятка. Даже, наверное, максимум штук 5.
— Тогда слушай.
Разработчики Java заметили, что в большинстве своем строки внутри программ существуют в неизменяемом виде, но иногда их все-таки изменяют. Очень неприятно, когда вы создали строку, сохранили в нее что-то важное, передали в чужой метод, а он ее поменял. Чтобы такого не происходило, разработчики решили создать два вида строк – изменяемую и неизменяемую.
— Класс String стал отвечать за неизменяемую строку, а класс StringBuilder – за изменяемую. Объекты этих классов легко преобразуются друг в друга. В большинстве случаев разработчикам программ на Java достаточно просто String, что показывает, что проектировщики Java были правы.
— Т.е. если мне нужна строка – я создаю класс String, а если нужна изменяемая строка – то класс StringBuilder?
— Да. На самом деле есть еще класс StringBuffer – это копия StringBuilder, но все методы которого объявлены synchronized, для того, чтобы к объекту можно было обращаться из разных нитей программы.
— А как же такой пример? Разве тут строка не изменяется?
String s = "cat";
s = s + "-" + s;
— Нет. Тут есть два объекта String: «cat»и «cat-cat». Второй создается на основе первого, но первый объект не меняется. На самом деле тут все еще интереснее. Вот какой код сгенерирует компилятор, когда будет компилировать твой пример:
String s = "cat";
StringBuilder s2 = new StringBuilder(s);
s2.append("-");
s2.append(s);
s = s2.toString();
Т.е. для создания новой строки практически всегда используется StringBuilder, просто иногда всю работу за тебя делает компилятор. Но ведь твой вариант проще, разве нет?
— Да, классно, что в Java такой продвинутый компилятор.
— А теперь пройдемся по методам класса String:
1) Как узнать длину строки?
Метод length возвращает длину строки – количество в ней символов.
Метод(ы) | Пример(ы) |
---|---|
|
|
|
2) Как получить символ из строки?
Метод charAt возвращает символ строки по его номеру. Нумерация символов начинается с 0.
Метод(ы) | Пример(ы) |
---|---|
|
|
|
3) Как получить символы из строки?
Метод toCharArray возвращает массив всех символов строки.
Метод(ы) | Пример(ы) |
---|---|
|
|
4) Как сравнить строки?
Метод equals проверяет, совпадают ли строки, а метод equalsIgnoreCase — совпадают ли строки, игнорируя регистр букв.
Метод(ы) | Пример(ы) |
---|---|
|
|
|
|
5) Как превратить все буквы в строке в большие или маленькие?
Метод toUpperCase возвращает копию строки, все символы которой – большие.
Метод toLowerCase возвращает копию строки, все символы которой – маленькие.
Метод(ы) | Пример(ы) |
---|---|
|
|
Результат:
|
|
|
|
Результат:
|
6) Как убрать пробелы в начале и в конце строки?
Метод trim возвращает копию строки, без «пустых» символов в начале и конце.
Метод(ы) | Пример(ы) |
---|---|
|
|
Результат:
|
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ