"Mit gondolsz, Amigo? Melyik a legnépszerűbb Java osztály az int után?"

– Már adtál nekem egy spoilert a lecke címében, Ellie. Ez az String!

"Valóban, ez egy spoiler. Stringabszolút mindenhol használják. Van egy csomó hasznos módszer, amelyeket jobb, ha ismer.

"Az Stringosztály az egyetlen olyan osztály a primitív típusokon kívül, amelyek literáljai használhatók egy utasításban switch; a fordító speciális módon kezeli a karakterlánc-összeadást és a String objektumokat; Stringaz objektumok különleges módon tárolódnak a memóriában. Az Stringosztály alapvetően egy nagyon speciális osztály.

"Az Stringosztálynak van egy csomó segítő osztálya is, amelyek célja, hogy tovább egyszerűsítsék a stringekkel való munkát Java-ban. Ha mindezt megtanulod, sok minden sokkal könnyebbé válik."

– Alig várom.

"Nos, kezdjük ennek az ökoszisztémának a magjától – az Stringosztály szervezetétől. Az osztály szerkezete Stringvalójában nagyon egyszerű: benne van egy karaktertömb ( chartömb), amely a karakterlánc összes karakterét tárolja. Például a „Hello” szó tárolása így történik:

A String osztály felépítése

Ez fontos.

Valójában ez nem egészen pontos. Mivel az Stringosztály nagyon fontos, rengeteg optimalizálást használ, és az adatokat belsőleg nem karaktertömbként, hanem egyszerűen bájttömbként tárolják.

A String osztály módszerei

Az Stringosztálynak nagyon sok metódusa van: csak 18 konstruktora van! Tehát az alábbiakban csak a leggyakrabban használtakat sorolom fel:

Mód Leírás
int length()
A karakterláncban lévő karakterek számát adja vissza
boolean isEmpty()
Ellenőrzi, hogy a karakterlánc üres-e
boolean isBlank()
Ellenőrzi, hogy a karakterlánc csak szóköz karaktereket tartalmaz-e: szóköz, tabulátor, új sor stb.
char charAt(int index)
A karakterlánc indexpozíciójában lévő karaktert adja vissza.
char[] toCharArray()
A karakterláncot alkotó karakterek tömbjét (másolatát) adja vissza
byte[] getBytes()
Egy karakterláncot bájtok halmazává alakít, és visszaadja a bájtok tömbjét.
String[] split(String regex)
Egy karakterláncot több részkarakterláncra oszt fel.
String join(CharSequence delimiter, elements)
Több részkarakterláncot egyesít
String intern()
Húrt helyez a húrmedencébe.

– Ez nagyon jól néz ki!

"Írjunk egy programot, amely a fájl elérési útját Unix stílusról Windows stílusra konvertálja. A Unix a /karaktert használja a mappák elválasztására, míg a Windows a \karaktert.

Megoldás 1.char Tömb használata

Kód Megjegyzések
Scanner console = new Scanner(System.in);
String path = console.nextLine();

char[] chars = path.toCharArray();
for (int i = 0; i < chars.length; i++)
   if (chars[i] == '/')
      chars[i] = '\\';

String result = new String(chars);
System.out.println(result);
Lapolvasó objektum létrehozása
Sor olvasása a konzolról

Karaktertömb átalakítása
Karaktertömbbé Karakterek áthurkolása
Ha a karakter az /,
cserélje ki a karakterrel \. Ne felejtsd el a menekülést.

Hozzon létre egy új karakterláncot a karaktertömb alapján.
Jelenítse meg a karakterláncot.

2. megoldás.split() A és join()módszerek használatával :

Kód Megjegyzések
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String array[] = path.split("\\/");


String result = String.join("\\", array);


System.out.println(result);
Szkenner objektum létrehozása
Olvasson be egy sort a konzolról Karakterlánc

konvertálása karakterláncok tömbjévé . A /karaktert elválasztóként használják (a további két perjel dupla kilépés eredménye).
Összefűzze a karakterláncok tömbjében lévő összes karakterláncot . A -t \elválasztóként használják (úgy látjuk, hogy megszökött).

Jelenítse meg a karakterláncot.

3. megoldás. A módszer használata replace(char oldChar, char newChar):

Kód Megjegyzések
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String result = path.replace('/', '\\');

System.out.println(result);
Szkenner objektum létrehozása
Sor olvasása a konzolról

Egyszerűen cserélje ki az egyik karaktert egy másikra
(a második kihagyott)
Jelenítse meg a karakterláncot.

"A harmadik megoldás tetszett a legjobban. De mind a hármat gyakorolni fogom."

"Jó volt, Amigo. Látom, hogy már türelmetlen vagy, hogy a gyakorlatba ültesd az új tudásodat. A lecke véget ért."