1. Структура на Stringкласа
Днес ще говорим за Stringкласа. След ints, класът String е най-популярният клас в Java. Използва се абсолютно навсякъде. Той има куп полезни методи, които е по-добре да знаете.
Класът Stringе единственият клас, различен от примитивните типове, чиито литерали могат да се използват в switchизраз; компилаторът обработва добавянето на низове и String обектите по специален начин; Stringобектите се съхраняват в паметта по специален начин. По принцип Stringкласът е много специален клас.
Също така, Stringкласът има куп помощни класове, чиято цел е допълнително да опростят работата с низове в Java. Когато научите всичко това, много неща наистина ще станат много по-лесни за вас. Е, ще започнем от самото ядро на тази екосистема — организацията на Stringкласа.
Масив от знаци
Структурата на Stringкласа всъщност е много проста: вътре в него има масив от знаци (char array), който съхранява всички знаци от низа. Ето How например се съхранява думата „Здравей“:
Всъщност това не е съвсем точно. Тъй като Stringкласът е много важен, той използва много оптимизации и данните се съхраняват вътрешно не като масив от знаци, а просто като масив от byteове.
2. Методи на Stringкласа
Класът Stringима много методи: има само 18 конструктора! Така че по-долу споменаваме само най-основните от тях:
| Методи | Описание |
|---|---|
|
Връща броя знаци в низа |
|
Проверява дали низът е празен низ |
|
Проверява дали низът съдържа само празни знаци: интервал, раздел, нов ред и т.н. |
|
Връща знака в позицията на индекса в низа. |
|
Връща масив от знаци (копие), които съставят низа |
|
Преобразува низ в набор от byteове и връща масива от byteове. |
|
Разделя низ на множество поднизове. |
|
Съединява множество поднизове заедно |
|
Поставя низ в string pool. |
Можете да научите повече за конструкторите в статията Конструктори на Java .
Нека напишем програма, която преобразува път на файл от стил Unix в стил Windows. Unix използва /знака за разделяне на папки, докато Windows използва \знака.
Решение 1: използване на масив от символи
| Код | Бележки |
|---|---|
|
Създайте обект на скенер Прочетете ред от конзолата Преобразувайте низ в масив от знаци Превъртете символите Ако знакът е /, заменете го с \. Не забравяйте за бягството. Създайте нов низ въз основа на масива от знаци. Покажете низа. |
Решение 2: — използване на методите split()иjoin()
| Код | Бележки |
|---|---|
|
Създайте обект на скенер Прочетете ред от конзолата Преобразувайте низ в масив от низове . Символът /се използва като разделител (допълнителните две наклонени черти са резултат от двойно екраниране). Свържете всички низове в масива от низове . Използва се \като разделител (виждаме го екранирано). Покажете низа. |
Решение 3: — използване на replace(char oldChar, char newChar)метода
| Код | Бележки |
|---|---|
|
Създайте обект на скенер Прочетете ред от конзолата Просто заменете един знак с друг (вторият е екраниран) Покажете низа. |
GO TO FULL VERSION