"Hva synes du, Amigo? Hva er den mest populære Java-klassen etter int?"

"Du har allerede gitt meg en spoiler i tittelen på leksjonen, Ellie. Det er String!"

"Det er faktisk en spoiler. Stringbrukes absolutt overalt. Den har en haug med nyttige metoder som du er bedre å kjenne til.

" StringKlassen er den eneste klassen bortsett fra primitive typer hvis bokstaver kan brukes i en switchuttalelse; kompilatoren håndterer strengaddisjon og strengobjekter på en spesiell måte; Stringobjekter lagres i minnet på en spesiell måte. I utgangspunktet Stringer klassen en veldig spesialklasse.

"Klassen har også Stringen haug med hjelpeklasser som har som formål å forenkle arbeidet med strenger i Java ytterligere. Når du lærer alt dette, vil mange ting virkelig bli mye lettere for deg å gjøre."

"Jeg kan ikke vente."

"Vel, vi starter fra selve kjernen av dette økosystemet - organiseringen av klassen String. Strukturen til klassen Stringer faktisk veldig enkel: inne i den er en tegnarray ( chararray) som lagrer alle tegnene i strengen. For eksempel, dette er hvordan ordet "Hei" lagres:

String-klassens struktur

Det er viktig.

Faktisk er dette ikke helt nøyaktig. Fordi Stringklassen er veldig viktig, bruker den mange optimaliseringer, og dataene lagres internt ikke som en tegnmatrise, men ganske enkelt som en bytematrise.

Metoder i String-klassen

Klassen Stringhar mange metoder: den har 18 konstruktører alene! Så nedenfor vil jeg bare liste opp de mest brukte:

Metoder Beskrivelse
int length()
Returnerer antall tegn i strengen
boolean isEmpty()
Sjekker om strengen er en tom streng
boolean isBlank()
Sjekker at strengen bare inneholder mellomrom: mellomrom, tabulator, ny linje osv.
char charAt(int index)
Returnerer tegnet ved indeksposisjonen i strengen.
char[] toCharArray()
Returnerer en rekke av tegnene (en kopi) som utgjør strengen
byte[] getBytes()
Konverterer en streng til et sett med byte og returnerer matrisen med byte.
String[] split(String regex)
Deler en streng i flere understrenger.
String join(CharSequence delimiter, elements)
Kobler sammen flere understrenger
String intern()
Setter en snor i strengbassenget.

"Det ser veldig bra ut!"

"La oss skrive et program som konverterer en filbane fra Unix-stil til Windows-stil. Unix bruker tegnet /til å skille mapper, mens Windows bruker \tegnet.

Løsning 1. Bruke en charmatrise

Kode Notater
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);
Opprett et skannerobjekt
Les en linje fra konsollen

Konverter en streng til en tegnmatrise
Gå over tegnene
Hvis tegnet er /,
erstatt det med \. Ikke glem å rømme.

Lag en ny streng basert på tegnarrayen.
Vis strengen.

Løsning 2. Bruke split()og- join()metodene:

Kode Notater
Scanner console = new Scanner(System.in);
String path = console.nextLine();

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


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


System.out.println(result);
Lag et skannerobjekt
Les en linje fra konsollen

Konverter streng til en rekke strenger . Tegnet /brukes som skilletegn (de ekstra to skråstrekene er et resultat av dobbel escape).
Slå sammen alle strengene i rekken av strenger . Den \brukes som en separator (vi ser den unnslippet).

Vis strengen.

Løsning 3. Bruke replace(char oldChar, char newChar)metoden:

Kode Notater
Scanner console = new Scanner(System.in);
String path = console.nextLine();

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

System.out.println(result);
Lag et skannerobjekt
Les en linje fra konsollen.

Bytt ut ett tegn med et annet
(det andre er escaped)
Vis strengen.

"Jeg likte den tredje løsningen best. Men jeg skal øve på alle tre."

"Godt gjort, Amigo. Jeg ser at du allerede er utålmodig etter å sette den nye kunnskapen din ut i livet. Leksjonen er over."