1. Klassens Stringstruktur

I dag skal vi tale om Stringklassen. Efter ints er String-klassen den mest populære klasse i Java. Det bruges absolut overalt. Det har en masse nyttige metoder, som du er bedre stillet at kende.

Klassen Stringer den eneste klasse bortset fra primitive typer, hvis bogstaver kan bruges i et switchudsagn; compileren håndterer strengtilføjelse og strengobjekter på en særlig måde; Stringgenstande er historier i hukommelsen på en særlig måde. Grundlæggende Stringer klassen en helt speciel klasse.

Klassen har også Stringen masse 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. Nå, vi starter fra selve kernen af ​​dette økosystem - klassens organisering String.

Række af karakterer

Klassens struktur Stringer faktisk meget enkel: inde i den er der et tegnarray (char-array), der gemmer alle tegnene i strengen. For eksempel er dette, hvordan ordet 'Hej' er gemt:

String-klassens opbygning
Vigtig!

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.


String2. Klassens metoder

Klassen Stringhar en masse metoder: den har 18 konstruktører alene! Så nedenfor nævner vi kun de mest grundlæggende af dem:

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 sammen
String intern()
Sætter en snor i string pool.

Du kan lære mere om konstruktører i artiklen Java Constructors .

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 char-array

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: — ved hjælp 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: — ved hjælp 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.