"Hvad synes du, Amigo? Hvad er den mest populære Java-klasse efter int?"

"Du har allerede givet mig en spoiler i titlen på lektionen, Ellie. Det er String!"

"Det er faktisk en spoiler. Stringbruges absolut overalt. Det har en masse nyttige metoder, som du er bedre stillet at kende.

" StringKlassen er den eneste klasse bortset fra primitive typer, hvis bogstaver kan bruges i en switchsætning; compileren håndterer strengaddition og strengobjekter på en særlig måde; Stringobjekter er lagret i hukommelsen på en særlig måde. Grundlæggende Stringer klassen en meget specialklasse.

"Klassen har også Stringen flok hjælperklasser, hvis formål er yderligere at forenkle arbejdet med strenge i Java. Når du lærer alt dette, vil mange ting virkelig blive meget nemmere for dig at gøre."

"Jeg kan ikke vente."

"Nå, vi starter fra selve kernen af ​​dette økosystem - klassens organisering String. Klassens struktur Stringer faktisk meget enkel: inde i den er der et tegnarray ( chararray), der gemmer alle tegnene i strengen. For For eksempel er dette, hvordan ordet 'Hej' er gemt:

String-klassens opbygning

Det er vigtigt.

Faktisk er dette ikke helt præcist. Fordi Stringklassen er meget vigtig, bruger den en masse optimeringer, og dataene lagres internt ikke som et tegnarray, men blot som et bytearray.

Metoder i String-klassen

Klassen Stringhar en masse metoder: den har 18 konstruktører alene! Så nedenfor vil jeg kun liste de mest brugte:

Metoder Beskrivelse
int length()
Returnerer antallet af tegn i strengen
boolean isEmpty()
Kontrollerer, om strengen er en tom streng
boolean isBlank()
Kontrollerer, at strengen kun indeholder blanktegn: mellemrum, tabulator, ny linje osv.
char charAt(int index)
Returnerer tegnet ved indekspositionen i strengen.
char[] toCharArray()
Returnerer en matrix af tegnene (en kopi), der udgør strengen
byte[] getBytes()
Konverterer en streng til et sæt bytes og returnerer matrixen af ​​bytes.
String[] split(String regex)
Opdeler en streng i flere understrenge.
String join(CharSequence delimiter, elements)
Forener flere understrenge
String intern()
Sætter en snor i snorebassinet.

"Det ser meget godt ud!"

"Lad os skrive et program, der konverterer en filsti fra Unix-stil til Windows-stil. Unix bruger tegnet /til at adskille mapper, mens Windows bruger \tegnet.

Løsning 1. Brug af et chararray

Kode Noter
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);
Opret et scannerobjekt
Læs en linje fra konsollen

Konverter en streng til et tegnarray
Løft over tegnene
Hvis tegnet er /,
skal du erstatte det med \. Glem ikke at flygte.

Opret en ny streng baseret på tegnarrayet.
Vis strengen.

Løsning 2. Brug af split()og join()metoderne:

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

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


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


System.out.println(result);
Opret et scannerobjekt
Læs en linje fra konsollen

Konverter streng til en række strenge . Tegnet /bruges som en separator (de ekstra to skråstreger er resultatet af dobbelt escape).
Sammenkæd alle strengene i rækken af ​​strenge . Den \bruges som en separator (vi ser den undslap).

Vis strengen.

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

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

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

System.out.println(result);
Opret et scannerobjekt
Læs en linje fra konsollen.

Erstat blot et tegn med et andet
(det andet er escaped)
Vis strengen.

"Jeg kunne bedst lide den tredje løsning. Men jeg vil øve mig alle tre."

"Godt gået, Amigo. Jeg kan se, at du allerede er utålmodig efter at omsætte din nye viden i praksis. Lektionen er slut."