1. Klassens Stringstruktur

Idag ska vi prata om Stringklassen. Efter ints är String-klassen den mest populära klassen i Java. Den används absolut överallt. Den har ett gäng användbara metoder som du är bättre på att känna till.

Klassen Stringär den enda klassen förutom primitiva typer vars bokstavliga ord kan användas i ett switchuttalande; kompilatorn hanterar strängtillägg och strängobjekt på ett speciellt sätt; Stringföremål lagras i minnet på ett speciellt sätt. I grund och botten Stringär klassen en väldigt speciell klass.

Klassen har också Stringett gäng hjälpklasser vars syfte är att ytterligare förenkla arbetet med strängar i Java. När du lär dig allt detta kommer många saker verkligen att bli mycket lättare för dig att göra. Tja, vi ska börja från själva kärnan i detta ekosystem - klassens organisation String.

Uppsättning av karaktärer

Klassens struktur Stringär faktiskt väldigt enkel: inuti den finns en teckenarray (char array) som lagrar alla tecken i strängen. Så här lagras till exempel ordet "Hej":

Stringklassens struktur
Viktig!

Egentligen är detta inte riktigt korrekt. Eftersom Stringklassen är väldigt viktig använder den många optimeringar och data lagras internt inte som en teckenuppsättning, utan helt enkelt som en bytematris.


2. Klassens Stringmetoder

Klassen Stringhar många metoder: den har bara 18 konstruktörer! Så nedan nämner vi bara de mest grundläggande av dem:

Metoder Beskrivning
int length()
Returnerar antalet tecken i strängen
boolean isEmpty()
Kontrollerar om strängen är en tom sträng
boolean isBlank()
Kontrollerar att strängen endast innehåller blanksteg: mellanslag, tabb, ny rad, etc.
char charAt(int index)
Returnerar tecknet vid indexpositionen i strängen.
char[] toCharArray()
Returnerar en uppsättning av tecken (en kopia) som utgör strängen
byte[] getBytes()
Konverterar en sträng till en uppsättning byte och returnerar arrayen av byte.
String[] split(String regex)
Delar upp en sträng i flera delsträngar.
String join(CharSequence delimiter, elements)
Sammanfogar flera delsträngar
String intern()
Sätter ett snöre i string pool.

Du kan lära dig mer om konstruktörer i artikeln Java Constructors .

Låt oss skriva ett program som konverterar en filsökväg från Unix-stil till Windows-stil. Unix använder /tecknet för att separera mappar, medan Windows använder \tecknet.

Lösning 1: Använd en char array

Koda Anteckningar
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);
Skapa ett skannerobjekt
Läs en rad från konsolen

Konvertera en sträng till en teckenuppsättning
Slinga över tecknen
Om tecknet är , /ersätt
det med \. Glöm inte att fly.

Skapa en ny sträng baserat på teckenuppsättningen.
Visa strängen.

Lösning 2: — med hjälp av metoderna split()ochjoin()

Koda Anteckningar
Scanner console = new Scanner(System.in);
String path = console.nextLine();

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


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


System.out.println(result);
Skapa ett skannerobjekt
Läs en rad från konsolen

Konvertera sträng till en array av strängar . Tecknet /används som en separator (de extra två snedstreck är resultatet av dubbel escape).
Sammanfoga alla strängar i raden av strängar . Den \används som en separator (vi ser att den har escaped).

Visa strängen.

Lösning 3: — använda replace(char oldChar, char newChar)metoden

Koda Anteckningar
Scanner console = new Scanner(System.in);
String path = console.nextLine();

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

System.out.println(result);
Skapa ett skannerobjekt
Läs en rad från konsolen

Byt bara ut ett tecken med ett annat
(det andra är escaped)
Visa strängen.