1. Klassens Stringstruktur

I dag skal vi snakke om Stringklassen. Etter ints er String-klassen den mest populære klassen i Java. Den brukes absolutt overalt. Den har en haug med nyttige metoder som du er bedre å kjenne til.

Klassen Stringer den eneste klassen bortsett fra primitive typer hvis bokstavelige bokstaver kan brukes i et switchutsagn; kompilatoren håndterer strengtilføyelse og strengobjekter på en spesiell måte; Stringgjenstander er lagret i minnet på en spesiell måte. I utgangspunktet Stringer klassen en helt spesiell klasse.

Klassen har også Stringen haug med hjelpeklasser som har som formål å ytterligere forenkle arbeidet med strenger i Java. Når du lærer alt dette, vil mange ting virkelig bli mye lettere for deg å gjøre. Vel, vi starter fra selve kjernen av dette økosystemet - organiseringen av klassen String.

En rekke karakterer

Strukturen til Stringklassen er faktisk veldig enkel: inne i den er en tegnarray (char array) som lagrer alle tegnene i strengen. Dette er for eksempel hvordan ordet "Hei" lagres:

String-klassens struktur
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.


String2. Klassens metoder

Klassen Stringhar mange metoder: den har 18 konstruktører alene! Så nedenfor nevner vi bare de mest grunnleggende av dem:

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 streng inn i string pool.

Du kan lære mer om konstruktører i artikkelen Java Constructors .

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: bruk av en char array

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: — ved å bruke metodene split()ogjoin()

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: — ved å 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.