String1. Az osztály felépítése

Ma az osztályról fogunk beszélni String. Az ints után a String osztály a legnépszerűbb osztály a Java nyelven. Abszolú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 switchutasításban; 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. Alapvetően az Stringosztály egy nagyon különleges osztály.

Ezenkívül az Stringosztálynak van egy csomó segédosztálya, amelyek célja a karakterláncokkal való munka további egyszerűsítése Java nyelven. Ha mindezt megtanulod, sok mindent könnyebben meg tudsz csinálni. Nos, kezdjük ennek az ökoszisztémának a magjától – az Stringosztály szervezetétől.

Karakterek tömbje

Az Stringosztály felépítése valójában nagyon egyszerű: benne van egy karaktertömb (char array), amely a sztring ö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
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.


String2. Az óra módszerei

Az Stringosztálynak nagyon sok metódusa van: csak 18 konstruktora van! Az alábbiakban tehát csak a legalapvetőbbeket említjük meg:

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()
Egy karakterláncot helyez a string pool.

A konstruktorokról a Java konstruktorok című cikkben tudhat meg többet .

Í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.

1. megoldás: 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: — a split()és join()módszerekkel

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:replace(char oldChar, char newChar) – a módszer segítségével

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.