1. Ändra strängar

I Java är strängar oföränderliga objekt. Detta gjordes för att göra String-klassen mycket optimerad och för att den skulle kunna användas överallt. Till exempel rekommenderas endast oföränderliga typer för användning som nycklar i HashMap-samlingen .

Men situationer uppstår ofta när programmerare skulle tycka att det är bekvämare för Stringklassen att vara föränderlig. De vill ha en klass som inte skapar en ny delsträng varje gång en av dess metoder anropas.

Tja, anta att vi har en mycket stor sträng och att vi ofta behöver lägga till något i slutet av den. I det här fallet kan även en samling tecken ( ArrayList<Character>) vara effektivare än att ständigt återskapa och sammanfoga strängobjekt.

Det är just därför en String-liknande typ som kan ändras lades till Java-språket. Det kallas StringBuilder.

Skapa ett objekt

För att skapa ett StringBuilderobjekt baserat på en befintlig sträng måste du köra en sats som:

StringBuilder name = new StringBuilder(string);

För att skapa en tom föränderlig sträng, måste du använda ett uttalande så här:

StringBuilder name = new StringBuilder();

Lista över metoder

Klassen StringBuilderhar två dussin användbara metoder. Här är de viktigaste:

Metod Beskrivning
StringBuilder append(obj)
Konverterar det skickade objektet till en sträng och lägger till det i den aktuella strängen
StringBuilder insert(int index, obj)
Konverterar det skickade objektet till en sträng och infogar det i den aktuella strängen
StringBuilder replace(int start, int end, String str)
Ersätter den del av strängen som anges av start..end-intervallet med den skickade strängen
StringBuilder deleteCharAt(int index)
Tar bort tecknet med det angivna indexet från strängen
StringBuilder delete(int start, int end)
Tar bort tecken inom det angivna intervallet från strängen
int indexOf(String str, int index)
Söker efter en delsträng i den aktuella strängen
int lastIndexOf(String str, int index)
Söker efter en delsträng i den aktuella strängen, med början från slutet
char charAt(int index)
Returnerar tecknet i strängen vid det godkända indexet
String substring(int start, int end)
Returnerar delsträngen som definieras av det angivna intervallet
StringBuilder reverse()
Reverserar den aktuella strängen.
void setCharAt(int index, char)
Ändrar tecknet vid det angivna indexet till det godkända tecknet
int length()
Returnerar längden på strängen i tecken

Här är en kort beskrivning av varje metod


2. Beskrivning av metoder:

Lägger till en sträng

För att lägga till något till en föränderlig sträng ( StringBuilder), använd append()metoden. Exempel:

Koda Beskrivning
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

Konvertera till en standardsträng

För att konvertera ett StringBuilderobjekt till ett String-objekt behöver du bara anropa dess toString()metod. Exempel

Koda Produktion
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

Hur tar jag bort en karaktär?

För att ta bort ett tecken i en föränderlig sträng måste du använda deleteCharAt()metoden. Exempel:

Koda Produktion
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

Hur ersätter jag en del av en sträng med en annan sträng?

För detta finns replace(int begin, int end, String str)metoden. Exempel:

Koda Produktion
StringBuilder builder = new StringBuilder("Mellow");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
MeHello!w


3. Användbara exempel på att arbeta med strängar

Hur vänder jag en sträng?

Det finns en speciell metod för att göra detta — reverse(); Exempel:

Koda Produktion
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

StringBufferklass

Det finns en annan klass — StringBuffer, som är en analog till klassen, StringBuildermen dess metoder är markerade med synchronizedmodifieraren. Det betyder att StringBufferobjektet kan nås samtidigt från flera trådar.

Men det är mycket långsammare än StringBuilder. Du kan behöva den här klassen när du börjar aktivt utforska multithreading i Java Multithreading -uppdraget.